Java POI库详解:从入门到精通
Java POI库是一个强大的开源库,主要用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。通过Apache POI库,Java开发者可以非常方便地读写这些文档格式。本文将从入门到精通,详细介绍Java POI库,并给出相关代码示例。
一、环境搭建
在开始之前,首先需要在项目中引入Apache POI库。可以通过Maven来方便地管理依赖。在pom.xml
中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.1.1</version>
</dependency>
</dependencies>
二、读取Excel文件
下面的代码示例演示了如何使用Apache POI库读取一个Excel文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadExcel {
public static void main(String[] args) {
String filePath = "example.xlsx"; // Excel文件路径
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
for (Row row : sheet) {
for (Cell cell : row) {
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + " ");
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + " ");
break;
default:
}
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
此代码读取一个名为example.xlsx
的Excel文件,遍历第一张表中的每一行和每一单元格,打印出内容。
三、写入Excel文件
接下来要介绍如何创建一个Excel文件并写入数据。以下是一个简单的示例:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteExcel {
public static void main(String[] args) {
Workbook workbook = new XSSFWorkbook(); // 创建工作簿
Sheet sheet = workbook.createSheet("Sample Sheet"); // 创建Sheet
for (int i = 0; i < 10; i++) {
Row row = sheet.createRow(i); // 创建行
for (int j = 0; j < 5; j++) {
Cell cell = row.createCell(j); // 创建单元格
cell.setCellValue("Row " + i + ", Cell " + j); // 设置单元格值
}
}
try (FileOutputStream fos = new FileOutputStream("output.xlsx")) {
workbook.write(fos); // 将数据写入文件
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
workbook.close(); // 关闭工作簿
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这段代码创建了一个名为output.xlsx
的Excel文件,并在其中填充了一些简单的数据。
四、POI库的高级用法
除了基本的读写操作,POI库还支持公式的计算、图表的生成以及单元格样式的设置等高级操作。以下是设置单元格样式的示例:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
public class StyledExcel {
public static void main(String[] args) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Styled Sheet");
CellStyle style = workbook.createCellStyle();
style.setBorderBottom(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
style.setAlignment(HorizontalAlignment.CENTER);
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Styled Cell");
cell.setCellStyle(style); // 应用样式
try (FileOutputStream fos = new FileOutputStream("styled_output.xlsx")) {
workbook.write(fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在这个示例中,我们创建了一个单元格样式并将其应用于一个单元格。样式包括边框和居中对齐。
五、总结
Apache POI库为Java开发者提供了强大的Office文档处理能力。无论是简单的读写操作,还是复杂的样式设置和公式计算,POI库都能轻松应对。通过本文所介绍的内容,你应该能够在自己的Java应用中使用POI库处理Excel文档,并不断探索其更多功能,以满足项目需求。