Created attachment 37703 [details] example source file Hi guys, In the following example second invocation of Workbook.close() produces file test2.xlsx with two sheets, but the second has no data. Also observed: the first file has size of 32,952 bytes and the second one has 61,619 bytes. int rowNumber = 0; int cellNumber = 0; String outputFileName = "c:/temp/test1.xlsx"; File outFile = new File(outputFileName); File outFile2 = new File("c:/temp/test2.xlsx"); Workbook workbook = new SXSSFWorkbook(100); try { Sheet sheet = workbook.createSheet("Sheet1"); Row row = null; for (int i = 0; i < 1000; i++) { row = sheet.createRow(rowNumber++); cellNumber = 0; for (int j = 1; j <= 10; j++) { Cell cell = row.createCell(cellNumber++); cell.setCellValue(String.valueOf(j)); } } try (FileOutputStream out = new FileOutputStream(outFile)) { workbook.write(out); } } finally { workbook.close(); ((SXSSFWorkbook) workbook).dispose(); } workbook = new SXSSFWorkbook((XSSFWorkbook) WorkbookFactory.create(outFile), 100); try { Sheet sheet = workbook.createSheet("Sheet2"); Row row = null; for (int i = 0; i < 1000; i++) { row = sheet.createRow(rowNumber++); cellNumber = 0; for (int j = 1; j <= 10; j++) { Cell cell = row.createCell(cellNumber++); cell.setCellValue(String.valueOf(j)); } } try (FileOutputStream out = new FileOutputStream(outFile2)) { workbook.write(out); } } finally { workbook.close(); ((SXSSFWorkbook) workbook).dispose(); }
There was wrong example. Please use this one: int rowNumber = 0; int cellNumber = 0; String outputFileName = "c:/temp/test1.xlsx"; File outFile = new File(outputFileName); //File outFile2 = new File("c:/temp/test2.xlsx"); Workbook workbook = new SXSSFWorkbook(100); try { Sheet sheet = workbook.createSheet("Sheet1"); Row row = null; for (int i = 0; i < 1000; i++) { row = sheet.createRow(rowNumber++); cellNumber = 0; for (int j = 1; j <= 10; j++) { Cell cell = row.createCell(cellNumber++); cell.setCellValue(String.valueOf(j)); } } try (FileOutputStream out = new FileOutputStream(outFile)) { workbook.write(out); } } finally { workbook.close(); ((SXSSFWorkbook) workbook).dispose(); } rowNumber = 0; cellNumber = 0; workbook = new SXSSFWorkbook((XSSFWorkbook) WorkbookFactory.create(outFile), 100); try { Sheet sheet = workbook.createSheet("Sheet2"); Row row = null; for (int i = 0; i < 1000; i++) { row = sheet.createRow(rowNumber++); cellNumber = 0; for (int j = 1; j <= 10; j++) { Cell cell = row.createCell(cellNumber++); cell.setCellValue(String.valueOf(j)); } } Files.delete(Paths.get(outFile.getPath())); try (FileOutputStream out = new FileOutputStream(outFile)) { workbook.write(out); } } finally { workbook.close(); ((SXSSFWorkbook) workbook).dispose(); }