使用 Apache POI 在 Java 中写入 Excel 文件的方法

 更新时间:2025年02月25日 09:48:31   作者:大名顶顶  
这篇文章详细介绍了如何使用ApachePOI在Java中编写Excel文件的技巧,包括创建工作簿、工作表、行和单元格,以及如何处理不同版本的Excel文件,通过详细的步骤和代码示例,读者可以快速掌握ApachePOI的基本使用方法,感兴趣的朋友一起看看吧

大家好!🌟 在这篇文章中,我们将带你深入学习如何使用 Apache POI 在 Java 中编写 Excel 文件的技巧!📊📚 如果你是 Java 开发者,或者正在探索如何处理 Excel 文件的数据,那么这篇文章绝对不容错过!🚀

在这里,我们不仅仅是介绍基础的 Excel 文件写入方法,还会通过详细的步骤和代码示例,帮助你快速上手。✨ 通过本篇文章,你将掌握如何创建 Excel 文件、如何插入数据以及如何使用 Apache POI 简单而高效地操作 Excel 文件!📑💻

如果你觉得这篇文章对你有帮助,请不要忘记点赞👍,收藏📌,并关注我们获取更多技术分享!还可以在下方评论📝,和我们分享你的学习心得和问题!💬

一.准备工作 

关于 Apache POI 项目

Apache POI 项目的使命是创建和维护 Java API,以操作基于 Office Open XML 标准(OOXML)和 Microsoft 的 OLE 2 复合文档格式(OLE2)的各种文件格式。简而言之,您可以使用 Java 读取和写入 MS Excel 文件。

在 Java 中读写 Excel 时,您会遇到两个前缀:

HSSF:用于处理 2003 或更早版本的 Excel 文件(.xls)。一些带有 HSSF 前缀的类包括 HSSFWorkbook、HSSFSheet、HSSFRow 和 HSSFCell。

XSSF:用于处理 2007 或更高版本的 Excel 文件(.xlsx)。一些带有 XSSF 前缀的类包括 XSSFWorkbook、XSSFSheet、XSSFRow 和 XSSFCell。

以下是您需要了解的一些类:

Workbook:这是表示 Excel 工作簿的高级类。

Sheet:这是表示 Excel 工作表的高级类。

Row:这是表示 Excel 行的高级类。它具有与行相关的方法。

Cell:这是表示单个 Excel 单元格的高级类。它具有与单元格相关的方法,例如:getDataType()。

依赖项

如果您使用 Maven,您需要在 pom.xml 中添加以下依赖项。

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>3.13</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.13</version>
</dependency>

如果您没有使用 Maven,则需要将以下 JAR 文件添加到类路径中。

  • poi-3.13.jar
  • commons-codec-1.9.jar
  • poi-ooxml-3.13.jar
  • poi-ooxml-schemas-3.13.jar
  • xmlbeans-2.6.0.jar
  • stax-api-1.0.1.jar

二.使用 POI 写入 Excel 文件的步骤

1.创建一个空白工作簿:

XSSFWorkbook workbook = new XSSFWorkbook();

2.创建一个工作表并传递工作表名称:

XSSFSheet sheet = workbook.createSheet("Country");

3.创建一行:

Row row = sheet.createRow(rownum++);

4.创建单元格,设置其值并将单元格添加到上述行:

Cell cell = row.createCell(cellnum++);
if (obj instanceof String) cell.setCellValue((String) obj);
else if (obj instanceof Double) cell.setCellValue((Double) obj);
else if (obj instanceof Integer) cell.setCellValue((Integer) obj);

5.重复步骤 3 和 4,直到您有数据。

三.java实现代码

我们将编写名为“CountriesDetails.xlsx”的 Excel 文件。

请创建 WriteExcelMain.java,并添加以下代码。

// 引入所需的包
package org.arpit.java2blog;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
// 引入 Apache POI 库中的相关类
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class WriteExcelMain {
    // 主方法,程序入口
    public static void main(String[] args) throws IOException {
        writeFileUsingPOI();  // 调用写文件的方法
    }
    // 定义写入 Excel 文件的方法
    public static void writeFileUsingPOI() throws IOException {
        // 创建一个空的工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 创建一个空的工作表,并命名为 "Country"
        XSSFSheet sheet = workbook.createSheet("Country");
        // 创建一个数据集合,包含一些示例数据
        ArrayList<Object[]> data = new ArrayList<Object[]>();
        data.add(new String[]{"Country", "Capital", "Population"}); // 添加标题行
        data.add(new Object[]{"India", "Delhi", 10000}); // 添加数据行
        data.add(new Object[]{"France", "Paris", 40000});
        data.add(new Object[]{"Germany", "Berlin", 20000});
        data.add(new Object[]{"England", "London", 30000});
        // 遍历数据集合,并将每一行数据写入 Excel 工作表
        int rownum = 0;
        for (Object[] countries : data) {
            // 创建行并设置行号
            Row row = sheet.createRow(rownum++);
            int cellnum = 0;
            // 遍历每一行的数据并创建单元格
            for (Object obj : countries) {
                Cell cell = row.createCell(cellnum++);
                // 根据数据类型设置单元格的值
                if (obj instanceof String)
                    cell.setCellValue((String) obj);  // 如果数据是字符串,设置为字符串
                else if (obj instanceof Double)
                    cell.setCellValue((Double) obj);  // 如果数据是 Double 类型,设置为数字
                else if (obj instanceof Integer)
                    cell.setCellValue((Integer) obj);  // 如果数据是 Integer 类型,设置为数字
            }
        }
        // 将工作簿写入文件系统
        try {
            // 创建输出流,将数据写入 "CountriesDetails.xlsx" 文件
            FileOutputStream out = new FileOutputStream(new File("CountriesDetails.xlsx"));
            workbook.write(out);  // 写入数据
            out.close();  // 关闭输出流
            System.out.println("CountriesDetails.xlsx has been created successfully");  // 输出提示信息
        } catch (Exception e) {
            e.printStackTrace();  // 异常处理
        } finally {
            // 最后关闭工作簿
            workbook.close();
        }
    }
}

当您运行上述程序时,您将得到以下输出:

CountriesDetails.xlsx has been created successfully

现在,让我们查看 CountriesDetails.xlsx 文件的内容。

在本篇文章中,我们详细介绍了如何使用 Apache POI 在 Java 中创建和写入 Excel 文件。通过几个简单的步骤和示例代码,你学会了如何创建一个空白的 Excel 工作簿、添加数据并将其保存到文件中。我们还介绍了 POI 库的基本使用,如何根据不同的 Excel 文件版本选择适当的前缀(HSSF 和 XSSF),并提供了 Maven 和非 Maven 项目的依赖项设置。

通过这些步骤,你将能够轻松地在 Java 项目中处理 Excel 文件,实现数据的导入、导出以及格式化等操作。无论你是进行数据分析还是生成报表,这些知识都能大大提升你的开发效率。👨‍💻📊

到此这篇关于如何使用 Apache POI 在 Java 中写入 Excel 文件的文章就介绍到这了,更多相关Apache POI在 Java 中写入 Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot的@EnableAsync和@Async注解分析

    SpringBoot的@EnableAsync和@Async注解分析

    这篇文章主要介绍了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一个快速开发框架,可以帮助开发人员快速构建基于Spring的应用程序,需要的朋友可以参考下
    2023-07-07
  • spring boot整合log4j2及MQ消费处理系统日志示例

    spring boot整合log4j2及MQ消费处理系统日志示例

    这篇文章主要为大家介绍了spring boot整合log4j2及MQ消费处理系统日志的示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • java实现斗地主发牌功能

    java实现斗地主发牌功能

    这篇文章主要为大家详细介绍了java实现斗地主发牌功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Spring中@Autowire注入的深入讲解

    Spring中@Autowire注入的深入讲解

    这篇文章主要给大家介绍了关于Spring中@Autowire注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 非常全面的IReport的使用教程

    非常全面的IReport的使用教程

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。本教程给大家详细介绍IReport的使用解析,感兴趣的朋友一起看看吧
    2021-10-10
  • Java利用opencv实现用字符展示视频或图片的方法

    Java利用opencv实现用字符展示视频或图片的方法

    这篇文章主要介绍了Java利用opencv实现用字符展示视频或图片的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Spring JPA自定义查询结果的接收方式

    Spring JPA自定义查询结果的接收方式

    这篇文章主要介绍了Spring JPA自定义查询结果的接收方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java编程枚举类实战代码分享

    Java编程枚举类实战代码分享

    这篇文章主要介绍了Java编程枚举类实战代码分享,具有一定借鉴价值,需要的朋友可以了解下。
    2017-11-11
  • Mybatis配置文件之动态SQL配置备忘录

    Mybatis配置文件之动态SQL配置备忘录

    这篇文章主要介绍了Mybatis配置文件之动态SQL配置备忘录的相关资料,需要的朋友可以参考下
    2017-05-05
  • java基础之String知识总结

    java基础之String知识总结

    今天带大家来回顾一下Java基础,文中详细总结了String的相关知识,对正在学习java基础的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05

最新评论