Java中处理Excel:库概览与代码示例
尽管PythonLib专注于Python,但Java仍然是企业开发中最受欢迎的语言之一,而处理Excel电子表格是日常任务。本文将介绍Java中处理Excel的主要库、它们的功能,并提供实用的代码示例。
为什么Java需要Excel库?
Java没有内置读取和写入Excel文件的功能。为此,需要使用第三方库,它们可以实现:
- 创建新的Excel工作簿(XLS和XLSX格式)。
- 读取和编辑现有文件。
- 格式化单元格、合并单元格、设置样式。
- 处理公式、图表和宏。
- 从数据库或其他来源导出数据。
主要库
1. Apache POI
Apache POI 是Java中处理Microsoft Office文件最流行、最强大的库。它同时支持旧的XLS格式(HSSF)和新的XLSX格式(XSSF)。
优点:
- 完全支持Excel的所有功能:公式、样式、条件格式、图表。
- 活跃的社区和定期更新。
- 同时支持读取和写入。
缺点:
- 处理大文件时内存消耗高。
- API对初学者来说较复杂。
2. EasyExcel (Alibaba)
EasyExcel 是阿里巴巴开发的轻量级库,专为处理大型XLSX文件而设计。它采用流式处理,显著降低了内存消耗。
优点:
- 内存消耗极低(比POI低100倍)。
- 简单直观的API。
- 支持注解进行数据映射。
缺点:
- 不支持旧的XLS格式。
- 格式化支持有限。
3. JExcelApi (jxl)
一个较老的库,仅支持XLS格式。适用于简单任务,但长期未更新,且不支持XLSX。
代码示例
示例1:使用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) { try (FileInputStream fis = new FileInputStream("data.xlsx"); Workbook workbook = new XSSFWorkbook(fis)) { Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\\t"); break; } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}示例2:使用Apache POI写入数据到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) { try (Workbook workbook = new XSSFWor