java 读取 Excel表格内容

读写Excel,这么重要且普遍的问题,伟大的apache,早就为我们封装好了jar包,供我们使用了。无需我们再造轮子。

第一步:添加jar包依赖



  org.apache.poi
  poi
  4.0.1


  org.apache.poi
  poi-ooxml
  4.0.1

第二步:定义文件流 用来读取文件

InputStream is = new FileInputStream(path);//path为需要读取的文件路径
//XSSFWorkbook 是读取2007以上版本的表格,及.xlsx结尾
//HSSFWorkbook 是读取2003版本的表格,及.xls结尾
//现在应该一般都是2007以上的版本了吧
XSSFWorkbook excel = (XSSFWorkbook) XSSFWorkbookFactory.create(is);
is.close();
//当且仅当我们只用第一个表,即sheet;也可以循环遍历,这里简单认为只有一个sheet;
//excel.getNumberOfSheets() 可以获取到sheet的数量Sheet sheet = excel.getSheetAt(0);
sheet就是我们获取的需要操作的表格对象了。

第三步:需要操作的表对象拿到了,开始对具体的数据进行剖析,拆解成我们可以处理的数据类型,完成代码如下:

package cn.comcpz;
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.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 读取表格Excel
 *
 */
public class App 
{
    public static void main( String[] args ) throws Exception {
//        System.out.println( "Hello World!" );
        String path = "C:\\Users\\Administrator\\Desktop\\test.xlsx";
        List dataList= getExcelData(path);
        System.out.println("list:"+dataList);
    }
    public static List getExcelData(String path) throws Exception{
        List dataList = new ArrayList<>();
        InputStream is = new FileInputStream(path);
       
        XSSFWorkbook excel = (XSSFWorkbook) XSSFWorkbookFactory.create(is);
        is.close();
        //当且仅当我们只用第一个表,即sheet
        Sheet sheet = excel.getSheetAt(0);
        //获取最后一行的行数
        int rows = sheet.getLastRowNum();
        for(int rowNo=1;rowNo<=rows;rowNo++){//因为我这里第一行是列名,所以我从第二行开始取数据,0是第一行,1是第二行
            //定义一个map 用于接收每一行的数据,当然也可以定义对象接收
            Map map = new HashMap<>();
            Row row = sheet.getRow(rowNo);
            //一行有多个列,取最后一个列数,当做一共有多少列
            int cells = row.getLastCellNum();
            //遍历列的数据
            for(int cellNo = 0;cellNo 
  

 

 

 

你可能感兴趣的:(java基础)