日期:2014-05-20  浏览次数:21014 次

通过POI的方式读取execl表格(简单教程)
以前工作都是用的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); 
        }

    }
}

------解决方案--------------------
散分的么???