diff options
author | PJ Fanning <fanningpj@apache.org> | 2021-01-21 21:04:24 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2021-01-21 21:04:24 +0000 |
commit | 4013ffa2203cf67a0a8138b641afffdf69a855b2 (patch) | |
tree | 671afd1de6445b8e708e373760dcdc08d4999358 /src/ooxml/testcases/org | |
parent | 4a632f9389ec85b422692e00f42357246ff8f4d0 (diff) | |
download | poi-4013ffa2203cf67a0a8138b641afffdf69a855b2.tar.gz poi-4013ffa2203cf67a0a8138b641afffdf69a855b2.zip |
[bug-65096] XLSX Streaming XML not correctly reading multiple inline Strings
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885770 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases/org')
-rw-r--r-- | src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFSheetXMLHandler.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFSheetXMLHandler.java b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFSheetXMLHandler.java new file mode 100644 index 0000000000..4e02aadf24 --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFSheetXMLHandler.java @@ -0,0 +1,55 @@ +package org.apache.poi.xssf.eventusermodel; + +import org.apache.poi.POIDataSamples; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.util.XMLHelper; +import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler; +import org.apache.poi.xssf.usermodel.XSSFComment; +import org.junit.jupiter.api.Test; +import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; + +import java.io.InputStream; +import java.util.Iterator; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TestXSSFSheetXMLHandler { + private static final POIDataSamples _ssTests = POIDataSamples.getSpreadSheetInstance(); + + @Test + public void testInlineString() throws Exception { + try (OPCPackage xlsxPackage = OPCPackage.open(_ssTests.openResourceAsStream("InlineString.xlsx"))) { + final XSSFReader reader = new XSSFReader(xlsxPackage); + + final Iterator<InputStream> iter = reader.getSheetsData(); + + try (InputStream stream = iter.next()) { + final XMLReader sheetParser = XMLHelper.getSaxParserFactory().newSAXParser().getXMLReader(); + + sheetParser.setContentHandler(new XSSFSheetXMLHandler(reader.getStylesTable(), + new ReadOnlySharedStringsTable(xlsxPackage), new SheetContentsHandler() { + + int cellCount = 0; + + @Override + public void startRow(final int rowNum) { + } + + @Override + public void endRow(final int rowNum) { + } + + @Override + public void cell(final String cellReference, final String formattedValue, + final XSSFComment comment) { + assertEquals("\uD83D\uDE1Cmore text", formattedValue); + assertEquals(cellCount++, 0); + } + }, false)); + + sheetParser.parse(new InputSource(stream)); + } + } + } +} |