您的位置:首页 > 编程语言 > Java开发

java使用POI读取excel文件,兼容xls和xlsx

2017-11-29 15:59 2106 查看
1.maven管理项目,在pom.xml里加依赖,或者直接引用jar包

              
 <dependency>
                      <groupId>org.apache.poi</groupId>
                      <artifactId>poi</artifactId>
                      <version>3.10-FINAL</version>
                 </dependency>
                <dependency>
                     <groupId>org.apache.poi</groupId>
                     <artifactId>poi-ooxml</artifactId>
                     <version>3.10-FINAL</version>
                </dependency>

2.ReadExcel实现类,运行main方法

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.FormulaEvaluator;

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 ReadExcel {

public List<Double> readExcels(InputStream is)throws Exception{
List<Double> xlsxList = new ArrayList<Double>();
    try {
             if(is ==null){
                   throw new IOException("文件不正确!"); 
              }
            Workbook workbook = WorkbookFactory.create(is);
            FormulaEvaluator fe = workbook.getCreationHelper().createFormulaEvaluator();
            //获取第一张表
            Sheet sheet = workbook.getSheetAt(0);
            if(sheet == null){
                  throw new IOException("传入的excel的第一张表为空!"); 
             }
            for(int rowNum = 0;rowNum <= sheet.getLastRowNum(); rowNum++){
                  Row row = sheet.getRow(rowNum);
                  if(row != null){
                       //获得当前行的开始列  

                       int firstCellNum = row.getFirstCellNum();  

                      //获得当前行的列数  

                      int lastCellNum = row.getPhysicalNumberOfCells();  

                      String result = "";

                      //循环当前行  

                      for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){  

                           Cell cell = row.getCell(cellNum);  

                           double value = 0;

                          if(null!=fe.evaluate(cell)){

                               value = fe.evaluate(cell).getNumberValue();

                           }

                          result = result + cellNum + ":"+value + "----";

                       }  

                      System.out.println("result---"+result);
                  }
            }
            is.close();
    } catch (FileNotFoundException e) {
         throw new Exception("文件不正确!");
    }
      return xlsxList;
}

   public static void main(String[] args) throws Exception {  
        InputStream is = new FileInputStream("D:\\test.xlsx");
        ReadExcel re = new ReadExcel();
       re.readExcels(is);
    }

}

3.excel文件内容及打印结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息