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

1.maven管理项目,在pom.xml里加依赖,或者直接引用jar包

                
                      org.apache.poi
                      poi
                      3.10-FINAL
                 

               
                     org.apache.poi
                     poi-ooxml
                     3.10-FINAL
               

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 readExcels(InputStream is)throws Exception{
List xlsxList = new ArrayList();
    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文件内容及打印结果


java使用POI读取excel文件,兼容xls和xlsx_第1张图片



你可能感兴趣的:(java使用POI读取excel文件,兼容xls和xlsx)