1. 程式人生 > 實用技巧 >Apache POI讀取和寫入資料到excel

Apache POI讀取和寫入資料到excel

Apache POI是用Java編寫的免費開源的跨平臺的Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能,其中使用最多的就是使用POI操作Excel檔案。

maven座標:

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

POI結構:

HSSF - 提供讀寫Microsoft Excel XLS格式檔案的功能
XSSF - 提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能
HWPF - 提供讀寫Microsoft Word DOC格式檔案的功能
HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能
HDGF - 提供讀Microsoft Visio格式檔案的功能
HPBF - 提供讀Microsoft Publisher格式檔案的功能
HSMF - 提供讀Microsoft Outlook格式檔案的功能

從excel表讀取資料方式一

//建立工作簿
XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
//獲取工作表,既可以根據工作表的順序獲取,也可以根據工作表的名稱獲取
XSSFSheet sheet = workbook.getSheetAt(0);
//遍歷工作表獲得行物件
for (Row row : sheet) {
  //遍歷行物件獲取單元格物件
  for (Cell cell : row) {
    //獲得單元格中的值
    String value = cell.getStringCellValue();
    System.out.println(value);
  }
}
workbook.close();

從excel表讀取資料方式二

//建立工作簿
XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
//獲取工作表,既可以根據工作表的順序獲取,也可以根據工作表的名稱獲取
XSSFSheet sheet = workbook.getSheetAt(0);
//獲取當前工作表最後一行的行號,行號從0開始
int lastRowNum = sheet.getLastRowNum();
for(int i=0;i<=lastRowNum;i++){
  //根據行號獲取行物件
  XSSFRow row = sheet.getRow(i);
  short lastCellNum = row.getLastCellNum();
  for(short j=0;j<lastCellNum;j++){
    String value = row.getCell(j).getStringCellValue();
    System.out.println(value);
  }
}
workbook.close();

寫入資料到excel表

//在記憶體中建立一個Excel檔案
XSSFWorkbook workbook = new XSSFWorkbook();
//建立工作表,指定工作表名稱
XSSFSheet sheet = workbook.createSheet("傳智播客");

//建立行,0表示第一行
XSSFRow row = sheet.createRow(0);
//建立單元格,0表示第一個單元格
row.createCell(0).setCellValue("編號");
row.createCell(1).setCellValue("名稱");
row.createCell(2).setCellValue("年齡");

XSSFRow row1 = sheet.createRow(1);
row1.createCell(0).setCellValue("1");
row1.createCell(1).setCellValue("小明");
row1.createCell(2).setCellValue("10");

XSSFRow row2 = sheet.createRow(2);
row2.createCell(0).setCellValue("2");
row2.createCell(1).setCellValue("小王");
row2.createCell(2).setCellValue("20");

//通過輸出流將workbook物件下載到磁碟
FileOutputStream out = new FileOutputStream("D:\\hello.xlsx");
workbook.write(out);
out.flush();
out.close();
workbook.close();

從以上程式碼可以看出poi操作excel的核心物件

XSSFWorkbook:工作簿
XSSFSheet:工作表
Row:行
Cell:單元格