Java中处理Excel:Apache POI及替代方案

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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

推荐