以前工作都是用的csv文件,但是csv文件有一个致命的缺点,那就是如果用双击的方式直接打开csv文件并做了修改的话,那么长精度的数字会自动转换为科学技术法。。
刚开始还每次都用execl导入的方式,后来感觉实在是麻烦了。
于是下决心学一学POI的方式读取execl2010。
网上搜了一些资料,参考了论坛上网友的一些回帖。。
整理了一下,产生了如下的教程,特点就是注释多,看的明白,并没有什么特别的操作:
首先我要读取的execl表:
所需要的jar包为:
poi.jar
poi-ooxml.jar
poi-ooxml-schemas.jar。
另外还需要
dom4j.jar
xmlbeans.jar
如果这两个jar包不添加的话会报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlOptions
我的jar包列表如下:
最后上代码:
package cn.execl;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class POIReaderExecl {
public static void main(String[] args) throws Exception {
//输入输出流
InputStream is = new FileInputStream("d://work.xlsx");
//创建工作空间
Workbook wb = WorkbookFactory.create(is);
//获取工作表
Sheet sheet = wb.getSheetAt(0);//获取第一个工作表
//工作行
Row row ;
//工作单元格
Cell cell ;
//System.out.println("1:"+cell);
for(int i=1;i<=sheet.getLastRowNum();i++){
//获取第i行的工作行,第0行是列头,所以从第1行开始
row= sheet.getRow(i);
//获取第i行的工作行的第6个单元格的值
cell=row.getCell(5);
String str=cell.toString();
//打印出所有的产品编号
System.out.println(str);
}
}
}