当前位置:首页 > Java

java 如何控制excel

2026-03-24 10:19:06Java

使用 Apache POI 库操作 Excel

Apache POI 是 Java 操作 Excel 文件的主流库,支持读写 .xls.xlsx 格式。需引入以下依赖(Maven 示例):

<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>

创建并写入 Excel 文件

Workbook workbook = new XSSFWorkbook(); // .xlsx 格式
Sheet sheet = workbook.createSheet("Sheet1");
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("Hello");
row.createCell(1).setCellValue("World");

try (FileOutputStream fos = new FileOutputStream("output.xlsx")) {
    workbook.write(fos);
}

读取 Excel 文件

Workbook workbook = WorkbookFactory.create(new File("input.xlsx"));
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
    for (Cell cell : row) {
        System.out.print(cell.toString() + "\t");
    }
    System.out.println();
}

使用 EasyExcel 处理大数据量

EasyExcel 是阿里开源的 Excel 工具,适合大数据量场景(基于 POI 优化)。引入依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

快速写入示例

List<DemoData> dataList = Arrays.asList(new DemoData("A1"), new DemoData("A2"));
EasyExcel.write("output.xlsx", DemoData.class).sheet().doWrite(dataList);

监听器模式读取(避免内存溢出)

EasyExcel.read("input.xlsx", DemoData.class, new AnalysisEventListener<DemoData>() {
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println(data); // 逐行处理
    }
}).sheet().doRead();

使用 JExcelAPI 操作旧版 Excel

JExcelAPI 专用于 .xls 格式,轻量但功能较少:

WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
Label label = new Label(0, 0, "Test");
sheet.addCell(label);
workbook.write();
workbook.close();

通过模板引擎生成 Excel

若需复杂格式,可结合模板引擎(如 Thymeleaf、Velocity)生成 HTML,再转换为 Excel。例如使用 Flying Saucer 将 HTML 转 XLS:

java 如何控制excel

String html = "<table><tr><td>Content</td></tr></table>";
OutputStream os = new FileOutputStream("output.xls");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(os);
os.close();

注意事项

  • 处理大数据时推荐使用 EasyExcel 的流式读写
  • 写入公式需调用 cell.setCellFormula("SUM(A1:A10)")
  • 样式设置通过 CellStyle 对象实现(如字体、边框)
  • 日期格式需特殊处理:cell.setCellValue(new Date()) 并设置样式

以上方法覆盖了从基础操作到高性能处理的常见需求,可根据项目复杂度选择合适方案。

标签: javaexcel
分享给朋友:

相关文章

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java下载功能vue实现

java下载功能vue实现

Java 后端文件下载功能实现 后端需提供文件下载的接口,通常使用 HttpServletResponse 实现。以下是一个简单的 Java Spring Boot 示例: @GetMapping(…

php 实现java md5加密

php 实现java md5加密

PHP 实现 Java MD5 加密的兼容方法 Java 和 PHP 的 MD5 加密结果可能存在差异,主要因字符编码或输出格式不同。以下是确保两者结果一致的方法: 使用 hash 函数并处理编码…