You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2021/01/13 13:35:28 UTC

[Bug 65077] Workbook.close() clears the second (the last) sheet data in previously saved file

https://bz.apache.org/bugzilla/show_bug.cgi?id=65077

Andrey Grigoriev <gr...@netcracker.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|                            |All

--- Comment #1 from Andrey Grigoriev <gr...@netcracker.com> ---
 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();
      }

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org