日期:2014-05-16 浏览次数:20493 次
//定义读文件接口 package xls.io; import xls.core.CoreException; import xls.core.Record; import xls.core.Schema; public interface Reader { public boolean hasNext() throws CoreException; public Record next() throws CoreException; public void close() throws CoreException; public Schema getSchema(); }
//接口的实现类 package xls.io; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import xls.core.Cell; import xls.core.Column; import xls.core.CoreException; import xls.core.Record; import xls.core.Schema; import xls.core.Type; import xls.util.ConnUtils; import xls.util.IoUtils; public class SQLReader implements Reader { private Schema schema; private ResultSet rs; private ResultSetMetaData metadata; private int rowCount; private Record record; public SQLReader(Schema schema, ResultSet rs) { this.schema = schema; this.rs = rs; this.rowCount = 0; } public boolean hasNext() throws CoreException { try { while (rowCount < schema.getStartRow()) { System.err.println("[Skip Record] row=" + rowCount); if (!rs.next()) { return false; } ++rowCount; } if (rowCount > schema.getEndtRow()) { return false; } return rs.next(); } catch (SQLException sqlex) { throw new CoreException(sqlex); } } public Record next() throws CoreException { if (record == null) { record = new Record(schema, rowCount); } else { record.setRowIndex(rowCount); record.clearCells(); } try { if (metadata == null) { metadata = rs.getMetaData(); } int colTotal = metadata.getColumnCount(); Type srcType = null; Type dstType = null; Column column = null; Cell cellObject = null; for (int i = 1; i <= colTotal && (i <= schema.getColumnCount()); ++i) { column = schema.getColumn(i - 1); if (column.isNull()) { record.addCell(Cell.NULL_CELL); } else { srcType = column.getInType(); dstType = column.getType(); if (srcType == null) { srcType = dstType; } if (column.useDefault()) { cellObject = new Cell(schema, rowCount, i - 1, column.getDefaultValue()); } else { cellObject = new Cell(schema, rowCount, i - 1, IoUtils.readCell(rs, i, srcType, dstType)); } record.addCell(cellObject); } } } catch (SQLException sqlex) { throw new CoreException(sqlex); } ++rowCount; System.err.println("[Read]{" + record + "}"); return record; } public void close() throws CoreException { } public Schema getSchema() { return schema; } public static void main(String args[]) throws Exception { //POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(".\\conf\\in.xls")); //HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs); //HSSFSheet sheet = hssfworkbook.getSheetAt(0); Schema schema = new Schema(); schema.open(); Connection conn = ConnUtils.getConnection(schema.getStoreConfig()); Statement stmt = conn.createStatement(); ResultSet rs = stmt .executeQuery("select vc_billmonth,vc_clientId,vc_clientName from study"); SQLReader reader = new SQLReader(schema, rs); while (reader.hasNext()) { reader.next(); } conn.close(); } }
package xls.io; import java.io.FileInputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import xls.cor