1. 读取Excel2003
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener;
import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
import org.apache.poi.hssf.eventusermodel.HSSFListener;
import org.apache.poi.hssf.eventusermodel.HSSFRequest;
import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;
import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
import org.apache.poi.hssf.record.BOFRecord;
import org.apache.poi.hssf.record.BlankRecord;
import org.apache.poi.hssf.record.BoolErrRecord;
import org.apache.poi.hssf.record.BoundSheetRecord;
import org.apache.poi.hssf.record.FormulaRecord;
import org.apache.poi.hssf.record.LabelRecord;
import org.apache.poi.hssf.record.LabelSSTRecord;
import org.apache.poi.hssf.record.NumberRecord;
import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.RecordFormatException;
import org.apache.poi.hssf.record.SSTRecord;
import org.apache.poi.hssf.record.StringRecord;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import fhszreport.tool.LogTool;
/**
* Excel 97-2003数据读取类
*
* @author darrenlin
*/
public class Excel2003Reader implements HSSFListener
{
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private SSTRecord sstRecord;
private FormatTrackingHSSFListener formatListener;
/**
* 当前Sheet索引
*/
private int sheetIndex = -1;
private BoundSheetRecord[] orderedBSRs;
private List<BoundSheetRecord> boundSheetRecords = new ArrayList<BoundSheetRecord>();
private int nextColumn;
private boolean outputNextStringRecord;
/**
* 当前行
*/
private int curRow = 0;
/**
* 存储行记录的容器
*/
private List<String> rowlist = new ArrayList<String>();
/**
* 当前Sheet名
*/
private String currentSheetName;
/**
* 当前Sheet索引
*/
private Integer currentSheetIndex = 0;
/**
* 要处理的目标Sheet名
*/
private String targetSheetName = "";
/**
* 要处理的目标Sheet索引
*/
private Integer targetSheetIndex = null;
public void setTargetSheetName(String targetSheetName)
{
this.targetSheetName = targetSheetName;
}
public void setTargetSheetIndex(Integer targetSheetIndex)
{
this.targetSheetIndex = targetSheetIndex;
}
/**
* 行数据处理对象
*/
private RowProcessor rowReader;
public void setRowReader(RowProcessor rowReader)
{
this.rowReader = rowReader;
}
/**
* 主处理函数
*
* @param targetFile 目标文件路径
* @param logType 日志记录类型
* @throws IOException IO异常
*/
public void process(String targetFile, String logType) throws IOException
{
// 读取Excel流文件
FileInputStream file = new FileInputStream(targetFile);
POIFSFileSystem fs = new POIFSFileSystem(file);
// 创建HSSFListener
MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this);
formatListener &