POI 操作 EXCEL檔案(匯入、匯出)
阿新 • • 發佈:2018-11-03
1.1概述
- 開發中經常會設計到excel的處理,如匯出Excel,匯入Excel到資料庫中,操作Excel目前有兩個框架,一個是apache 的poi, 另一個是 Java Excel
- Apache POI 簡介是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式檔案讀和寫的功能。POI為“Poor Obfuscation Implementation”的首字母縮寫,意為“可憐的模糊實現”。
- 官方主頁:
http://poi.apache.org/index.html- API文件: http://poi.apache.org/apidocs/index.html
- Java Excel是一開放原始碼專案,通過它Java開發人員可以讀取Excel檔案的內容、建立新的Excel檔案、更新已經存在的Excel檔案。jxl 由於其小巧 易用的特點, 逐漸已經取代了 POI-excel的地位, 成為了越來越多的java開發人員生成excel檔案的首選。
1.2 Excel結構
1.3 實現程式碼
package poi.test; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.junit.Test; import java.io.FileInputStream; import java.io.FileOutputStream; public class App { // 寫 @Test public void write() throws Exception { //1. 建立工作簿 Workbook workbook = new HSSFWorkbook(); //2. 建立工作表 Sheet sheet = workbook.createSheet("測試"); //3. 建立行(第一行從0開始) Row row = sheet.createRow(0); //4. 建立單元格(第一行的第一列) Cell cell = row.createCell(0); //5. 設定單元格內容 cell.setCellValue("HelloWorld"); //6. 輸出到本地磁碟(OutputStream) workbook.write(new FileOutputStream("f:/test.xls")); workbook.close(); } // 讀 @Test public void read() throws Exception { //流程:1. 根據excel檔案流,建立工作簿; 2. 獲取工作表; 3.獲取行; 4.獲取單元格;5.獲取內容 Workbook workbook = new HSSFWorkbook(new FileInputStream("f:/test.xls")); // 獲取第一個工作表 Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = row.getCell(0); String row1cell1 = cell.getStringCellValue(); System.out.println(row1cell1); workbook.close(); // 實際有效行、列 System.out.println("獲取excel的物理行數:" + sheet.getPhysicalNumberOfRows()); System.out.println("獲取第一行的所有列個數:" + row.getPhysicalNumberOfCells()); } // 合併單元格 @Test public void merge() throws Exception { // 建立工作簿 Workbook workbook = new HSSFWorkbook(); // 建立工作表 Sheet sheet = workbook.createSheet(); // 合併單元格 (引數分別表示:開始行、結束行、開始列、結束列) sheet.addMergedRegion(new CellRangeAddress(2, 4, 1, 2)); // 建立第三行、第二列 sheet.createRow(2).createCell(1).setCellValue("合併內容!"); // 輸出 workbook.write(new FileOutputStream("f:/test.xls")); // 關閉 workbook.close(); } }
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>javaee</groupId> <artifactId>mybatis_lazy_oto</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>