[Bug 62985] New: Writing to new file saves also changes in source file

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug 62985] New: Writing to new file saves also changes in source file

Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=62985

            Bug ID: 62985
           Summary: Writing to new file saves also changes in source file
           Product: POI
           Version: 4.0.0-FINAL
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: SS Common
          Assignee: [hidden email]
          Reporter: [hidden email]
  Target Milestone: ---

If I open an existing Excel document, do some changes and save it with a new
file name, the changes are saved in both files. Saving it with the same file
name as the source file leads to the following exception:

Exception in thread "main" org.apache.poi.ooxml.POIXMLException:
java.io.EOFException: Unexpected end of ZLIB input stream
        at
org.apache.poi.ooxml.POIXMLDocument.getProperties(POIXMLDocument.java:147)
        at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:240)
        at de.giz.meb.POIProof.main(POIProof.java:28)
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
        at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240)
        at
org.apache.commons.compress.archivers.zip.InflaterInputStreamWithStatistics.fill(InflaterInputStreamWithStatistics.java:52)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
        at
org.apache.commons.compress.archivers.zip.InflaterInputStreamWithStatistics.read(InflaterInputStreamWithStatistics.java:67)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:122)
        at
org.apache.commons.compress.archivers.zip.InflaterInputStreamWithStatistics.read(InflaterInputStreamWithStatistics.java:58)
        at java.io.FilterInputStream.read(FilterInputStream.java:83)
        at
org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.read(ZipArchiveThresholdInputStream.java:69)
        at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2890)
        at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:674)
        at
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:806)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
        at
org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3414)
        at
org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1272)
        at
org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1259)
        at
org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
        at
org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument$Factory.parse(Unknown
Source)
        at
org.apache.poi.ooxml.POIXMLProperties.<init>(POIXMLProperties.java:81)
        at
org.apache.poi.ooxml.POIXMLDocument.getProperties(POIXMLDocument.java:145)
        ... 2 more


You can test it with the following code:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class POIProof {

        public static void main(String[] args) {
                Workbook w;
                try {
                        // open existing file
                        w = WorkbookFactory.create(new
File("C:\\dev\\MyExcel.xlsx"));
                        Sheet s = w.getSheetAt(0);
                        Row r = s.getRow(0);
                        Cell c = r.createCell(1);
                        c.setCellValue("Easy Test");
                        // write to new file
                        FileOutputStream out = new
FileOutputStream("C:\\dev\\MyExcel_mod.xlsx");
                        w.write(out);
                        w.close();                      
                } catch (EncryptedDocumentException | IOException e) {
                        //TODO
                }


        }

}

We tested that with Version 4.0.0-FINAL and 4.0.1.

Using XSSFWorkbook instead worked fine.

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[Bug 62985] Writing to new file saves also changes in source file

Bugzilla from bugzilla@apache.org
https://bz.apache.org/bugzilla/show_bug.cgi?id=62985

Andreas Beeker <[hidden email]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|                            |All
             Status|NEW                         |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #1 from Andreas Beeker <[hidden email]> ---


*** This bug has been marked as a duplicate of bug 59287 ***

--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]