You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2018/10/09 22:09:59 UTC

svn commit: r1843351 - /poi/site/publish/components/spreadsheet/how-to.html

Author: fanningpj
Date: Tue Oct  9 22:09:59 2018
New Revision: 1843351

URL: http://svn.apache.org/viewvc?rev=1843351&view=rev
Log:
update sample code

Modified:
    poi/site/publish/components/spreadsheet/how-to.html

Modified: poi/site/publish/components/spreadsheet/how-to.html
URL: http://svn.apache.org/viewvc/poi/site/publish/components/spreadsheet/how-to.html?rev=1843351&r1=1843350&r2=1843351&view=diff
==============================================================================
--- poi/site/publish/components/spreadsheet/how-to.html (original)
+++ poi/site/publish/components/spreadsheet/how-to.html Tue Oct  9 22:09:59 2018
@@ -782,120 +782,118 @@ The latest version is always available f
 import java.io.InputStream;
 import java.util.Iterator;
 
+import org.apache.poi.ooxml.util.SAXHelper;
+import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.xssf.eventusermodel.XSSFReader;
 import org.apache.poi.xssf.model.SharedStringsTable;
-import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
+
+import javax.xml.parsers.ParserConfigurationException;
 
 public class ExampleEventUserModel {
-	public void processOneSheet(String filename) throws Exception {
-		OPCPackage pkg = OPCPackage.open(filename);
-		XSSFReader r = new XSSFReader( pkg );
-		SharedStringsTable sst = r.getSharedStringsTable();
-
-		XMLReader parser = fetchSheetParser(sst);
-
-		// To look up the Sheet Name / Sheet Order / rID,
-		//  you need to process the core Workbook stream.
-		// Normally it's of the form rId# or rSheet#
-		InputStream sheet2 = r.getSheet("rId2");
-		InputSource sheetSource = new InputSource(sheet2);
-		parser.parse(sheetSource);
-		sheet2.close();
-	}
-
-	public void processAllSheets(String filename) throws Exception {
-		OPCPackage pkg = OPCPackage.open(filename);
-		XSSFReader r = new XSSFReader( pkg );
-		SharedStringsTable sst = r.getSharedStringsTable();
-		
-		XMLReader parser = fetchSheetParser(sst);
-
-		Iterator<InputStream> sheets = r.getSheetsData();
-		while(sheets.hasNext()) {
-			System.out.println("Processing new sheet:\n");
-			InputStream sheet = sheets.next();
-			InputSource sheetSource = new InputSource(sheet);
-			parser.parse(sheetSource);
-			sheet.close();
-			System.out.println("");
-		}
-	}
-
-	public XMLReader fetchSheetParser(SharedStringsTable sst) throws SAXException {
-		XMLReader parser =
-			XMLReaderFactory.createXMLReader(
-					"org.apache.xerces.parsers.SAXParser"
-			);
-		ContentHandler handler = new SheetHandler(sst);
-		parser.setContentHandler(handler);
-		return parser;
-	}
-
-	/** 
-	 * See org.xml.sax.helpers.DefaultHandler javadocs 
-	 */
-	private static class SheetHandler extends DefaultHandler {
-		private SharedStringsTable sst;
-		private String lastContents;
-		private boolean nextIsString;
-		
-		private SheetHandler(SharedStringsTable sst) {
-			this.sst = sst;
-		}
-		
-		public void startElement(String uri, String localName, String name,
-				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;
-				}
-			}
-			// Clear contents cache
-			lastContents = "";
-		}
-		
-		public void endElement(String uri, String localName, String name)
-				throws SAXException {
-			// Process the last contents as required.
-			// Do now, as characters() may be called more than once
-			if(nextIsString) {
-				int idx = Integer.parseInt(lastContents);
-				lastContents = new XSSFRichTextString(sst.getEntryAt(idx)).toString();
-				nextIsString = false;
-			}
-
-			// v => contents of a cell
-			// Output after we've seen the string contents
-			if(name.equals("v")) {
-				System.out.println(lastContents);
-			}
-		}
-
-		public void characters(char[] ch, int start, int length)
-				throws SAXException {
-			lastContents += new String(ch, start, length);
-		}
-	}
-	
-	public static void main(String[] args) throws Exception {
-		ExampleEventUserModel example = new ExampleEventUserModel();
-		example.processOneSheet(args[0]);
-		example.processAllSheets(args[0]);
-	}
+    public void processOneSheet(String filename) throws Exception {
+        OPCPackage pkg = OPCPackage.open(filename);
+        XSSFReader r = new XSSFReader( pkg );
+        SharedStringsTable sst = r.getSharedStringsTable();
+
+        XMLReader parser = fetchSheetParser(sst);
+
+        // To look up the Sheet Name / Sheet Order / rID,
+        //  you need to process the core Workbook stream.
+        // Normally it's of the form rId# or rSheet#
+        InputStream sheet2 = r.getSheet("rId2");
+        InputSource sheetSource = new InputSource(sheet2);
+        parser.parse(sheetSource);
+        sheet2.close();
+    }
+
+    public void processAllSheets(String filename) throws Exception {
+        OPCPackage pkg = OPCPackage.open(filename);
+        XSSFReader r = new XSSFReader( pkg );
+        SharedStringsTable sst = r.getSharedStringsTable();
+
+        XMLReader parser = fetchSheetParser(sst);
+
+        Iterator<InputStream> sheets = r.getSheetsData();
+        while(sheets.hasNext()) {
+            System.out.println("Processing new sheet:\n");
+            InputStream sheet = sheets.next();
+            InputSource sheetSource = new InputSource(sheet);
+            parser.parse(sheetSource);
+            sheet.close();
+            System.out.println("");
+        }
+    }
+
+    public XMLReader fetchSheetParser(SharedStringsTable sst) throws SAXException, ParserConfigurationException {
+        XMLReader parser = SAXHelper.newXMLReader();
+        ContentHandler handler = new SheetHandler(sst);
+        parser.setContentHandler(handler);
+        return parser;
+    }
+
+    /**
+     * See org.xml.sax.helpers.DefaultHandler javadocs
+     */
+    private static class SheetHandler extends DefaultHandler {
+        private SharedStringsTable sst;
+        private String lastContents;
+        private boolean nextIsString;
+
+        private SheetHandler(SharedStringsTable sst) {
+            this.sst = sst;
+        }
+
+        public void startElement(String uri, String localName, String name,
+                                 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;
+                }
+            }
+            // Clear contents cache
+            lastContents = "";
+        }
+
+        public void endElement(String uri, String localName, String name)
+                throws SAXException {
+            // Process the last contents as required.
+            // Do now, as characters() may be called more than once
+            if(nextIsString) {
+                int idx = Integer.parseInt(lastContents);
+                lastContents = sst.getItemAt(idx).getString();
+                nextIsString = false;
+            }
+
+            // v => contents of a cell
+            // Output after we've seen the string contents
+            if(name.equals("v")) {
+                System.out.println(lastContents);
+            }
+        }
+
+        public void characters(char[] ch, int start, int length) {
+            lastContents += new String(ch, start, length);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        ExampleEventUserModel example = new ExampleEventUserModel();
+        example.processOneSheet(args[0]);
+        example.processAllSheets(args[0]);
+    }
 }
 </pre>
 <p>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org