]> source.dussan.org Git - poi.git/commitdiff
Bug 57930: Add support for inlineString in FromHowTo
authorDominik Stadler <centic@apache.org>
Thu, 31 Mar 2016 14:39:11 +0000 (14:39 +0000)
committerDominik Stadler <centic@apache.org>
Thu, 31 Mar 2016 14:39:11 +0000 (14:39 +0000)
Also do not require an Apache Xerces Parser, let the JDK choose an available one instead

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1737247 13f79535-47bb-0310-9956-ffa450edef68

src/examples/src/org/apache/poi/xssf/eventusermodel/examples/FromHowTo.java

index 2f31490dc44fdf284aca2e0d1ff3d767591c548f..e82476eb3a5d249610a3c6f9bc9789105460a51b 100644 (file)
@@ -58,7 +58,7 @@ public class FromHowTo {
                OPCPackage pkg = OPCPackage.open(filename);
                XSSFReader r = new XSSFReader( pkg );
                SharedStringsTable sst = r.getSharedStringsTable();
-               
+
                XMLReader parser = fetchSheetParser(sst);
 
                Iterator<InputStream> sheets = r.getSheetsData();
@@ -73,45 +73,40 @@ public class FromHowTo {
        }
 
        public XMLReader fetchSheetParser(SharedStringsTable sst) throws SAXException {
-               XMLReader parser =
-                       XMLReaderFactory.createXMLReader(
-                                       "org.apache.xerces.parsers.SAXParser"
-                       );
+               XMLReader parser = XMLReaderFactory.createXMLReader();
                ContentHandler handler = new SheetHandler(sst);
                parser.setContentHandler(handler);
                return parser;
        }
 
-       /** 
-        * See org.xml.sax.helpers.DefaultHandler javadocs 
+       /**
+        * See org.xml.sax.helpers.DefaultHandler javadocs
         */
        private static class SheetHandler extends DefaultHandler {
                private SharedStringsTable sst;
                private String lastContents;
                private boolean nextIsString;
-               
+               private boolean inlineStr;
+
                private SheetHandler(SharedStringsTable sst) {
                        this.sst = sst;
                }
-               
+
                public void startElement(String uri, String localName, String name,
-                               Attributes attributes) throws SAXException {
+                                                                Attributes attributes) throws SAXException {
                        // c => cell
                        if(name.equals("c")) {
                                // Print the cell reference
                                System.out.print(attributes.getValue("r") + " - ");
                                // Figure out if the value is an index in the SST
                                String cellType = attributes.getValue("t");
-                               if(cellType != null && cellType.equals("s")) {
-                                       nextIsString = true;
-                               } else {
-                                       nextIsString = false;
-                               }
+                               nextIsString = cellType != null && cellType.equals("s");
+                               inlineStr = cellType != null && cellType.equals("inlineStr");
                        }
                        // Clear contents cache
                        lastContents = "";
                }
-               
+
                public void endElement(String uri, String localName, String name)
                                throws SAXException {
                        // Process the last contents as required.
@@ -119,12 +114,12 @@ public class FromHowTo {
                        if(nextIsString) {
                                int idx = Integer.parseInt(lastContents);
                                lastContents = new XSSFRichTextString(sst.getEntryAt(idx)).toString();
-            nextIsString = false;
+                               nextIsString = false;
                        }
 
                        // v => contents of a cell
                        // Output after we've seen the string contents
-                       if(name.equals("v")) {
+                       if(name.equals("v") || (inlineStr && name.equals("c"))) {
                                System.out.println(lastContents);
                        }
                }
@@ -133,7 +128,7 @@ public class FromHowTo {
                        lastContents += new String(ch, start, length);
                }
        }
-       
+
        public static void main(String[] args) throws Exception {
                FromHowTo howto = new FromHowTo();
                howto.processFirstSheet(args[0]);