From 4013ffa2203cf67a0a8138b641afffdf69a855b2 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 21 Jan 2021 21:04:24 +0000 Subject: [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 --- .../eventusermodel/TestXSSFSheetXMLHandler.java | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFSheetXMLHandler.java (limited to 'src/ooxml/testcases/org') 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 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)); + } + } + } +} -- cgit v1.2.3