From eb417057c483a0dd1842096954f58aca53691acd Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 18 Jun 2017 05:59:25 +0000 Subject: [PATCH] Don't try to clone a chart, this makes integration-tests work for a few more documents, also the one added via bug 56557 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1799037 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/TestAllFiles.java | 9 ++------- .../apache/poi/stress/SpreadsheetHandler.java | 6 ++++++ .../poi/xssf/streaming/TestSXSSFWorkbook.java | 2 +- test-data/spreadsheet/56557.xlsx | Bin 10520 -> 10483 bytes 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index f3d79eb172..14e346bd3f 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -299,8 +299,7 @@ public class TestAllFiles { "spreadsheet/poc-xmlbomb.xlsx", // contains xml-entity-expansion "spreadsheet/poc-xmlbomb-empty.xlsx", // contains xml-entity-expansion "spreadsheet/poc-shared-strings.xlsx", // contains shared-string-entity-expansion - "spreadsheet/60255_extra_drawingparts.xlsx", // Non-drawing drawing - + // old Excel files, which we only support simple text extraction of "spreadsheet/testEXCEL_2.xls", "spreadsheet/testEXCEL_3.xls", @@ -321,12 +320,8 @@ public class TestAllFiles { "ddf/47143.dat", // sheet cloning errors - "spreadsheet/47813.xlsx", "spreadsheet/56450.xls", - "spreadsheet/OddStyleRecord.xls", - "spreadsheet/WithChartSheet.xlsx", - "spreadsheet/chart_sheet.xlsx", - "spreadsheet/SimpleScatterChart.xlsx" + "spreadsheet/OddStyleRecord.xls" ); private static final Set IGNORED = unmodifiableHashSet( diff --git a/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java b/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java index 854dbf2fba..2b5c6295fd 100644 --- a/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java +++ b/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java @@ -31,6 +31,7 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.util.RecordFormatException; +import org.apache.poi.xssf.usermodel.XSSFChartSheet; public abstract class SpreadsheetHandler extends AbstractFileHandler { public void handleWorkbook(Workbook wb) throws IOException { @@ -125,6 +126,11 @@ public abstract class SpreadsheetHandler extends AbstractFileHandler { }*/ for (int i=wb.getNumberOfSheets()-1; i>=0; i--) { + if(wb.getSheetAt(i) instanceof XSSFChartSheet) { + // clone for chart-sheets is not supported + continue; + } + try { wb.cloneSheet(i); } catch (RecordFormatException e) { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java index 2a4653173f..9179362fa2 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java @@ -580,7 +580,7 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook { @Test public void test56557() throws IOException, InvalidFormatException { - Workbook wb = WorkbookFactory.create(XSSFTestDataSamples.getSampleFile("56557.xlsx")); + Workbook wb = WorkbookFactory.create(XSSFTestDataSamples.getSampleFile("56557.xlsx"), null, false); // Using streaming XSSFWorkbook makes the output file invalid wb = new SXSSFWorkbook(((XSSFWorkbook) wb)); diff --git a/test-data/spreadsheet/56557.xlsx b/test-data/spreadsheet/56557.xlsx index d092ffa6b66fbc0647baffd10219b2cb6125ea19..7ca891cf5177b386b4f10f477dbcac901a64ffa4 100644 GIT binary patch delta 8159 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 delta 8022 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