在阅读过上篇关于POI的文章后,我想再来看下面的东东简直是轻而易举.因为多MS操作的缘故,先后尝试了J-O桥接,excel jdbc driver(依然存在问题,脑壳笨),现在使用POI这种方式感觉是比较简单,但在读取时有些烦琐.根据应用来选了吧.再学习学习!package tt;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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;
public class ttpoi {
POIFSFileSystem fs;
HSSFWorkbook wb;
//写入文件
public void writefun(String fname) throws IOException{
FileOutputStream filefun=new FileOutputStream(fname);
wb.write(filefun);
filefun.close();
}
//初始
public ttpoi(String FilePath){
try{
fs=new POIFSFileSystem(new FileInputStream(FilePath));
wb=new HSSFWorkbook(fs);
}
catch(IOException e){}
}
//控制台输出
public void printout(HSSFSheet sheet){
try{
HSSFRichTextString stringCellValue=null;
double numericCellValue=0;
HSSFCell cell=null;
HSSFRow row=null;
//System.out.print(sheet.getLastRowNum());
int i;
short n;
for(i=sheet.getFirstRowNum();i<sheet.getLastRowNum();i++)
{
row = sheet.getRow(i);
for(n=row.getFirstCellNum();n<row.getLastCellNum();n++)
{
//现在很郁闷的就是POI将String与数值分得很开,因此需要获取cell type.1是string,0是num.还有就是data type
cell=row.getCell(n);
switch(cell.getCellType()){
case 1: stringCellValue = cell.getRichStringCellValue();System.out.print(stringCellValue+" ");break;
case 0: numericCellValue = cell.getNumericCellValue();System.out.print((int)numericCellValue+" ");break;
}
}
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
}
//@SuppressWarnings("deprecation")
public static void main(String[] ags){
ttpoi basin=new ttpoi("F://20070904.xls");
HSSFSheet sheet = basin.wb.getSheetAt(0);
basin.printout(sheet);
}
}