]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.excel.poi/src/org/simantics/excel/poi/parser/streaming/StreamingParser.java
Reducing use of deprecated code: using CellType enum instead of int for
[simantics/interop.git] / org.simantics.excel.poi / src / org / simantics / excel / poi / parser / streaming / StreamingParser.java
1 package org.simantics.excel.poi.parser.streaming;\r
2 \r
3 import java.io.File;\r
4 import java.io.InputStream;\r
5 import java.util.Iterator;\r
6 \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
16 \r
17 public class StreamingParser {\r
18 \r
19         \r
20         public void process(Row row) {\r
21                 \r
22         }\r
23         \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
28                 \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
34                 wb.close();\r
35                 \r
36                 \r
37                 Iterator<InputStream> sheets = r.getSheetsData();\r
38                 XSSSheetHandler sheetHandler = new XSSSheetHandler(sst) {\r
39                         @Override\r
40                         public void writeRow(Row row) {\r
41                                 process(row);\r
42                         }\r
43                 };\r
44                 parser = fetchParser(sheetHandler);\r
45                 int sheetIndex = 0;\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
51                         sheet.close();\r
52                         sheetIndex++;\r
53                 }\r
54         }\r
55 \r
56         public XMLReader fetchParser(ContentHandler handler) throws SAXException {\r
57                 XMLReader parser = XMLReaderFactory.createXMLReader();\r
58                 parser.setContentHandler(handler);\r
59                 return parser;\r
60         }\r
61 \r
62 }\r