From 1fbfc70cca4335894ca94d6b8aaf59d8521e45a1 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 16 Dec 2015 18:15:31 +0000 Subject: [PATCH] Unit test for #58731 - not reproduced, and some javadocs git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1720411 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/POIDocument.java | 5 +++ .../java/org/apache/poi/POIXMLDocument.java | 5 +++ .../poi/xssf/usermodel/TestXSSFBugs.java | 31 ++++++++++++++++++ test-data/spreadsheet/58731.xlsx | Bin 0 -> 9023 bytes 4 files changed, 41 insertions(+) create mode 100644 test-data/spreadsheet/58731.xlsx diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index 2131ad857..aa8ccb378 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -19,6 +19,7 @@ package org.apache.poi; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -301,6 +302,10 @@ public abstract class POIDocument { * Writes the document out to the specified output stream. The * stream is not closed as part of this operation. * + * Note - if the Document was opened from a {@link File} rather + * than an {@link InputStream}, you must write out to + * a different file, overwriting via an OutputStream isn't possible. + * * @param out The stream to write to. * * @throws IOException thrown on errors writing to the stream diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java index b0b5d4454..cbb1d80cc 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java @@ -17,6 +17,7 @@ package org.apache.poi; import java.io.Closeable; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -196,6 +197,10 @@ public abstract class POIXMLDocument extends POIXMLDocumentPart implements Close /** * Write out this document to an Outputstream. * + * Note - if the Document was opened from a {@link File} rather + * than an {@link InputStream}, you must write out to + * a different file, overwriting via an OutputStream isn't possible. + * * @param stream - the java OutputStream you wish to write the file to * * @exception IOException if anything can't be written. diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 7004ec36d..ef57ae069 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2850,4 +2850,35 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertNotNull(wbBack); wbBack.close(); } + + public void test58731() throws Exception { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("58731.xlsx"); + Sheet sheet = wb.createSheet("Java Books"); + + Object[][] bookData = { + {"Head First Java", "Kathy Serria", 79}, + {"Effective Java", "Joshua Bloch", 36}, + {"Clean Code", "Robert martin", 42}, + {"Thinking in Java", "Bruce Eckel", 35}, + }; + + int rowCount = 0; + for (Object[] aBook : bookData) { + Row row = sheet.createRow(++rowCount); + + int columnCount = 0; + for (Object field : aBook) { + Cell cell = row.createCell(++columnCount); + if (field instanceof String) { + cell.setCellValue((String) field); + } else if (field instanceof Integer) { + cell.setCellValue((Integer) field); + } + } + } + + Workbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb); + sheet = wb.getSheet("Java Books"); + assertEquals(bookData[0][0], sheet.getRow(0).getCell(0).getStringCellValue()); + } } diff --git a/test-data/spreadsheet/58731.xlsx b/test-data/spreadsheet/58731.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..80e22f3d17b6eef7156e1d3d51e5e710e12209ac GIT binary patch literal 9023 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 literal 0 HcmV?d00001