KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > core > text > parser > XLSRecordListener


1 /*
2  * XLSRecordListener.java
3  *
4  * Created on 30. April 2004, 16:49
5  */

6
7 package org.contineo.core.text.parser;
8
9 import java.io.File JavaDoc;
10 import java.io.FileInputStream JavaDoc;
11 import java.io.InputStream JavaDoc;
12 import org.apache.log4j.Level;
13 import org.apache.log4j.Logger;
14 import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
15 import org.apache.poi.hssf.eventusermodel.HSSFListener;
16 import org.apache.poi.hssf.eventusermodel.HSSFRequest;
17 import org.apache.poi.hssf.record.BOFRecord;
18 import org.apache.poi.hssf.record.BoundSheetRecord;
19 import org.apache.poi.hssf.record.LabelSSTRecord;
20 import org.apache.poi.hssf.record.NumberRecord;
21 import org.apache.poi.hssf.record.Record;
22 import org.apache.poi.hssf.record.RowRecord;
23 import org.apache.poi.hssf.record.SSTRecord;
24 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
25 import org.contineo.core.LoggingManager;
26
27 /**
28  *
29  * @author Michael Scholz
30  */

31 public class XLSRecordListener implements HSSFListener {
32
33     /**
34      * @uml.property name="sstrec"
35      * @uml.associationEnd
36      */

37     private SSTRecord sstrec;
38
39     private StringBuffer JavaDoc content = new StringBuffer JavaDoc();
40
41     /**
42      * @uml.property name="logger"
43      * @uml.associationEnd
44      */

45     private Logger logger;
46
47     
48     /** Creates a new instance of XLSRecordListener */
49     public XLSRecordListener() {
50         logger = LoggingManager.getLogger(this.getClass());
51     }
52     
53     public void processRecord(Record record) {
54         switch (record.getSid()) {
55             // the BOFRecord can represent either the beginning of a sheet or the workbook
56
case BOFRecord.sid:
57             case BoundSheetRecord.sid:
58             case RowRecord.sid:
59                 break;
60             case NumberRecord.sid:
61                 NumberRecord numrec = (NumberRecord) record;
62                 content.append(String.valueOf(numrec.getValue()));
63                 content.append(" ");
64                 break;
65                 // SSTRecords store a array of unique strings used in Excel.
66
case SSTRecord.sid:
67                 sstrec = (SSTRecord) record;
68                 for (int k = 0; k < sstrec.getNumUniqueStrings(); k++) {
69                     content.append(sstrec.getString(k));
70                     content.append(" ");
71                 }
72                 break;
73             case LabelSSTRecord.sid:
74                 LabelSSTRecord lrec = (LabelSSTRecord) record;
75                 content.append(sstrec.getString(lrec.getSSTIndex()));
76                 content.append(" ");
77                 break;
78         }
79     }
80     
81     public StringBuffer JavaDoc parse(File JavaDoc file) {
82         try {
83             FileInputStream JavaDoc fin = new FileInputStream JavaDoc(file);
84             POIFSFileSystem poifs = new POIFSFileSystem(fin);
85             InputStream JavaDoc din = poifs.createDocumentInputStream("Workbook");
86             HSSFRequest req = new HSSFRequest();
87             req.addListenerForAllRecords(this);
88             HSSFEventFactory factory = new HSSFEventFactory();
89             factory.processEvents(req, din);
90             fin.close();
91             din.close();
92         } catch (Exception JavaDoc e) {
93             if (logger.isEnabledFor(Level.ERROR))
94                 logger.error(e.getMessage());
95         }
96         return content;
97     }
98 }
99
Popular Tags