https://bugs.documentfoundation.org/show_bug.cgi?id=163384

            Bug ID: 163384
           Summary: CALC shows a POI SXSSF file as corrupted unless
                    Zip64Mode.AlwaysWithCompatibility is used.
           Product: LibreOffice
           Version: 24.8.2.1 release
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: UNCONFIRMED
          Severity: normal
          Priority: medium
         Component: Calc
          Assignee: libreoffice-bugs@lists.freedesktop.org
          Reporter: andr...@manticore-projects.com

Description:
Greetings.

We write XLSX files using Apache POI in XSSF and SXSSF mode. The XML content of
those files is the same, but LibreOffice shows a "Corrupted" message when
opening the SXSSF version. It can be repaired though without any damage or
losses.

Excel and Gnumeric and Google Sheet open those files without any complains.

Forcing Zip64Mode.AlwaysWithCompatibility also works around the problem, but
increases the file size.
Careful: Zip64Mode.Never will freeze LibreCalc in an endless loop forever!

Sample java code to reproduce the problem is shown below.
Sample XLSX file is here:
https://manticore-projects.com/download/manticore_7841765197550883476.xlsx

Version: 24.2.6.2 (X86_64) / LibreOffice Community
Build ID: 5d815fb18c57fdadb2819d0f77b22a22936c58ed
CPU threads: 12; OS: Linux 6.11; UI render: default; VCL: gtk3
Locale: en-US (en_US.UTF-8); UI: en-US
24.2.6-5.1
Calc: threaded




Steps to Reproduce:
// Sample Java code to produce such files
import org.apache.commons.compress.archivers.zip.Zip64Mode;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        // this will cause corruption
        SXSSFWorkbook wb  = new SXSSFWorkbook(new XSSFWorkbook(), 100, true,
true);
        SXSSFSheet sheet = wb.createSheet("test");
        // wb.setZip64Mode(Zip64Mode.AlwaysWithCompatibility);

        // this will work
        // XSSFWorkbook wb  = new XSSFWorkbook();
        // XSSFSheet sheet = wb.createSheet("test");

        File outputFile = null;
        try {
            outputFile = File.createTempFile("poitest_", ".xlsx");
            FileOutputStream fileOutputStream = new
FileOutputStream(outputFile);
            wb.write(fileOutputStream);
            wb.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

Actual Results:
File shows Corruption Warning when opening in LibreCalc.

Expected Results:
File should be opened as valid (since it can be unzipped and also open in
Excel, Gnumeric and Google Sheets)


Reproducible: Always


User Profile Reset: No

Additional Info:
Pl

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to