天天看點

Java讀取Excel資料-基于Apache POI

一. POI是什麼

Apache POI - the Java API for Microsoft Documents,顧名思義,Apache的第三方包,用來操作微軟office文檔,我們以excel來說明。

二、需要的jar包

  • 首先需要到Apache官網下載下傳POI的庫,下載下傳連結位址:https://poi.apache.org/download.html
  • 進入我的百度網盤進行下載下傳,下載下傳連結:連結:https://pan.baidu.com/s/1hokZyOm4cztVtY4tb_6w5g

    提取碼:9sfy

    下載下傳解壓後,得到下面檔案:

    Java讀取Excel資料-基于Apache POI
    把圖中的jar檔案導入到自己的項目中,就可以使用POI,用Java讀Excel表格資料了。

> 注意:導入項目時,在項目中新建立以lib包用于存放jar包,将jar包導入後,進行如下操作,将jar包導入到項目中去

Java讀取Excel資料-基于Apache POI
  • POI的元件清單中,針對excel的主要是HSSF和XSSF元件,前者針對97-2007的通用版excel,即字尾xls;後者針對2007或更高版的excel,即字尾xlsx。官方概要如下:
HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format.
XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.
           

三.POI核心類

3.1 工具簿WorkBook

建立或維護Excel工作簿的所有類的超接口,Workbook,屬于org.apache.poi.ss.usermodel包。其下有兩個實作類:

  • HSSFWorkbook : 有讀取.xls 格式和寫入Microsoft Excel檔案的方法。它與微軟Office97-2003版本相容
  • XSSFWorkbook : 有讀寫Microsoft Excel和OpenOffice的XML檔案的格式.xls或.xlsx的方法。它與MS-Office版本2007或更高版本相容

是以在針對不同版本的excel時,需要對應以上使用不同的Workbook。構造函數中,常用的:

  • HSSFWorkbook
//直接建立新的
HSSFWorkbook()

//通過輸入流建立
HSSFWorkbook(java.io.InputStream s)
           
  • XSSFWorkbook
//直接建立新的
HSSFWorkbook()

//通過輸入流建立
HSSFWorkbook(java.io.InputStream s)

//通過File類建立
HSSFWorkbook(java.io.File file)
           
3.2 标簽頁Sheet

HSSFSheet 和 XSSFSheet 都是Sheet接口的實作類,Sheet可以使用Workbook的兩個方法獲得:

workbook.createSheet();
workbook.createSheet(String sheetName);
           
3.3 行 Row

同理,Row是 HSSFRow 和 XSSFRow 的接口,通過Sheet擷取:

3.4 單元格 Cell

同理,Cell是 HSSFCell 和 XSSFCell 的接口,通過Row擷取:

row.createCell(int column);
row.createCell(int column, int type);
           

有了以上基礎,我們就可以對表格進行操作

package com.apesource.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.xssf.usermodel.XSSFWorkbook;

public class Demo {
	public static void main(String[] args) {
		String path="C:\\Users\\ASUS\\Desktop\\data.xlsx";
		
		try {
			//接口
			Workbook workbook=null;
			
			//1.Workbook:電子表格文檔對象
			//根據字尾名,建立不同的workbook接口實作類對象
			if(path.endsWith(".xlsx")) {
				//新版Excel
				workbook=new XSSFWorkbook(path);
			}else {
				//舊版Excel
				workbook=new HSSFWorkbook(new FileInputStream(path));
			}
			
			//2.Sheet:文檔中的某個電子表
			//擷取第一個Sheet
			Sheet sheet=workbook.getSheetAt(0);
		
			for(int i=1;i<sheet.getLastRowNum();i++) {
			//3.Row:電子表中的某行資料(第i行)
				Row row=sheet.getRow(i);
				String id=row.getCell(0).toString();
				String name=row.getCell(1).toString();
				String address=row.getCell(2).toString();
			//4.Cell:資料行中的某個的單元格
				System.out.println("序号:"+id);
				System.out.println("姓名:"+name);
				System.out.println("位址:"+address);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

           

輸出結果:

Java讀取Excel資料-基于Apache POI