1 6 7 package org.contineo.core.text.parser; 8 9 import java.io.File ; 10 import java.io.FileInputStream ; 11 import java.io.InputStream ; 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 31 public class XLSRecordListener implements HSSFListener { 32 33 37 private SSTRecord sstrec; 38 39 private StringBuffer content = new StringBuffer (); 40 41 45 private Logger logger; 46 47 48 49 public XLSRecordListener() { 50 logger = LoggingManager.getLogger(this.getClass()); 51 } 52 53 public void processRecord(Record record) { 54 switch (record.getSid()) { 55 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 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 parse(File file) { 82 try { 83 FileInputStream fin = new FileInputStream (file); 84 POIFSFileSystem poifs = new POIFSFileSystem(fin); 85 InputStream 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 e) { 93 if (logger.isEnabledFor(Level.ERROR)) 94 logger.error(e.getMessage()); 95 } 96 return content; 97 } 98 } 99 | Popular Tags |