1 package org.simantics.excel.poi.parser.streaming;
\r
4 import java.io.InputStream;
\r
5 import java.util.Iterator;
\r
7 import org.apache.poi.openxml4j.opc.OPCPackage;
\r
8 import org.apache.poi.ss.usermodel.Row;
\r
9 import org.apache.poi.xssf.eventusermodel.XSSFReader;
\r
10 import org.apache.poi.xssf.model.SharedStringsTable;
\r
11 import org.xml.sax.ContentHandler;
\r
12 import org.xml.sax.InputSource;
\r
13 import org.xml.sax.SAXException;
\r
14 import org.xml.sax.XMLReader;
\r
15 import org.xml.sax.helpers.XMLReaderFactory;
\r
17 public class StreamingParser {
\r
20 public void process(Row row) {
\r
24 public void processAllSheets(File file) throws Exception {
\r
25 OPCPackage pkg = OPCPackage.open(file);
\r
26 XSSFReader r = new XSSFReader( pkg );
\r
27 SharedStringsTable sst = r.getSharedStringsTable();
\r
29 XSSWorkbookHandler workbookHandler = new XSSWorkbookHandler();
\r
30 XMLReader parser = fetchParser(workbookHandler);
\r
31 InputStream wb = r.getWorkbookData();
\r
32 InputSource wbSource = new InputSource(wb);
\r
33 parser.parse(wbSource);
\r
37 Iterator<InputStream> sheets = r.getSheetsData();
\r
38 XSSSheetHandler sheetHandler = new XSSSheetHandler(sst) {
\r
40 public void writeRow(Row row) {
\r
44 parser = fetchParser(sheetHandler);
\r
46 while(sheets.hasNext()) {
\r
47 sheetHandler.setSheet(workbookHandler.getSheets().get(sheetIndex));
\r
48 InputStream sheet = sheets.next();
\r
49 InputSource sheetSource = new InputSource(sheet);
\r
50 parser.parse(sheetSource);
\r
56 public XMLReader fetchParser(ContentHandler handler) throws SAXException {
\r
57 XMLReader parser = XMLReaderFactory.createXMLReader();
\r
58 parser.setContentHandler(handler);
\r