使用Java通過POI讀取EXCEL中的資料

Zero .發表於2020-10-11

 這裡有個Excel,怎麼使用java讀取excel中的資料呢?

檔案存放位置:

首先引入poi的jar包

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

我這裡寫了一個People類,目的是想把Excel中的資料讀取出來後轉成這個類,方便後續進行操作。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class People {
    private String name;
    private String age;
    private String sex;
    private String area;
}

 

然後看程式碼:

/**
 * FileName: MyExcelTest
 * Author:  zp
 * Date:    2020/2020/10/11/10:16
 * Description:
 */
package excel;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * Description: 
 * @author zpzp6
 * @create 2020/2020/10/11/10:16
 * @since 1.0.0
 */
public class MyExcelTest {
    public static void main(String[] args) throws IOException {
        //獲取工作簿
        XSSFWorkbook book = new XSSFWorkbook("E:\\我的檔案\\測試\\測試.xlsx");
        //獲取工作表
        XSSFSheet sheet = book.getSheetAt(0);
//        //第一種讀取讀取所有資料,實際中不需要
//        //獲取行
//        for (Row cells : sheet) {
//            //獲取單元格
//            for (Cell cell : cells) {
//                //獲取單元格中的內容
//                cell.setCellType(CellType.STRING);
//                System.out.println(cell.getStringCellValue());
//            }
//        }
        List<People> peopleList=new ArrayList<>();
        //普通for迴圈
        //開始索引0  結束索引
        int lastRowNum = sheet.getLastRowNum();
        System.out.println("最後一行:"+lastRowNum);
        for (int i = 1; i <= lastRowNum; i++) {
            //獲取單元格
            XSSFRow row = sheet.getRow(i);
            if(row!=null){
                List<String> list =new ArrayList<>();
                for (Cell cell : row) {
                    if(cell!=null && !"".equals(cell)){
                        //此處是把單元格都轉換成String型別
                        cell.setCellType(CellType.STRING);
                        String cellValue = cell.getStringCellValue();
                        System.out.println("單元格資料:"+cellValue);
                        list.add(cellValue);
                    }
                }
                if(list.size()>0){
                    People people = new People(list.get(0), list.get(1), list.get(2), list.get(3));
                    peopleList.add(people);
                }
            }


        }
        for (People people : peopleList) {
            System.out.println(people);
        }
        //釋放資源
        book.close();
    }

}

結果:

如果有這樣的報錯是因為開啟了Excel檔案,關閉就好。

 

 

 

 

 

相關文章