使用 Java 操作 Excel 的实用教程

ops/2025/1/18 9:57:06/

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。

🔍 博客内容包括:

  • Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。
  • 大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相关技术。
  • 开发工具:分享常用开发工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升开发效率。
  • 数据库与优化:总结MySQL及其他常用数据库技术,解决实际工作中的数据库问题。
  • Python与大数据:专注于Python编程语言的深度学习,数据分析工具(如Pandas、NumPy)和大数据处理技术,帮助您掌握数据分析、数据挖掘、机器学习等技术。
  • 数据结构与算法:总结数据结构与算法的核心知识,提升编程思维,帮助您应对大厂面试挑战。

🌟 我的目标:持续学习与总结,分享技术心得与解决方案,和您一起探索技术的无限可能!在这里,我希望能与您共同进步,互相激励,成为更好的自己。

📣 欢迎订阅本专栏,与我一起在这个知识的海洋中不断学习、分享和成长!💻🚀


📍版权声明:本博客所有内容均为原创,遵循CC 4.0 BY-SA协议,转载请注明出处。

目录

一、Apache POI 简介

1. 为什么选择 Apache POI?

2. Apache POI 的核心模块

二、环境准备

1. 添加 Maven 依赖

2. 导入必要的类

三、使用 Java 创建 Excel 文件

代码解析

四、读取 Excel 文件

代码解析

五、设置单元格样式

样式设置功能

六、处理大文件的优化方案


Excel 是一种流行的电子表格工具,用于存储和管理结构化数据。在 Java 开发中,操作 Excel 文件是一个常见需求,无论是读取还是生成 Excel 文件,Java 都提供了丰富的工具和库。本文将介绍使用 Apache POI 操作 Excel 文件的实用教程,包括基本原理和代码示例。


一、Apache POI 简介

Apache POI 是一个流行的 Java 开源库,用于操作 Microsoft Office 文件(如 Excel 和 Word)。对于 Excel 文件,Apache POI 提供了对 .xls(HSSF)和 .xlsx(XSSF)文件的全面支持。

1. 为什么选择 Apache POI?
  • 支持 .xls.xlsx 格式。

  • 提供全面的 Excel 操作能力,包括读取、写入、样式设置、公式计算等。

  • 活跃的社区支持和详细的文档。

2. Apache POI 的核心模块
  • HSSF(Horrible Spreadsheet Format):处理 .xls 文件。

  • XSSF(XML Spreadsheet Format):处理 .xlsx 文件。

  • SXSSF(Streaming XML Spreadsheet Format):处理大文件的流式操作。


二、环境准备

1. 添加 Maven 依赖

在使用 Apache POI 之前,需要在项目的 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>
</dependencies>
2. 导入必要的类

在代码中需要引入 Apache POI 提供的核心类:

java">import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import java.io.*;

三、使用 Java 创建 Excel 文件

以下代码演示如何使用 Apache POI 创建一个简单的 Excel 文件:

java">import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;public class ExcelWriter {public static void main(String[] args) {// 创建工作簿Workbook workbook = new XSSFWorkbook();// 创建工作表Sheet sheet = workbook.createSheet("Sheet1");// 创建行和单元格Row row = sheet.createRow(0); // 第一行Cell cell = row.createCell(0); // 第一行第一列cell.setCellValue("Hello, Excel!");// 写入文件try (FileOutputStream fileOut = new FileOutputStream("example.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();}System.out.println("Excel 文件创建成功!");}
}
代码解析
  1. Workbook:表示整个 Excel 文件。

  2. Sheet:表示工作表。

  3. Row 和 Cell:表示行和单元格。

  4. FileOutputStream:将工作簿写入到文件。


四、读取 Excel 文件

以下代码演示如何读取 Excel 文件中的内容:

java">import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class ExcelReader {public static void main(String[] args) {try (FileInputStream file = new FileInputStream(new File("example.xlsx"))) {// 加载工作簿Workbook workbook = WorkbookFactory.create(file);// 获取第一个工作表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;default:System.out.print("?\t");}}System.out.println();}} catch (IOException e) {e.printStackTrace();}}
}
代码解析
  1. 使用 WorkbookFactory.create() 动态加载 .xls.xlsx 文件。

  2. 遍历 Sheet 的行和单元格,使用 getCellType() 判断单元格类型。


五、设置单元格样式

以下代码演示如何为单元格设置样式:

java">import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;public class CellStyleExample {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("StyledSheet");Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Styled Text");// 创建单元格样式CellStyle style = workbook.createCellStyle();Font font = workbook.createFont();font.setBold(true);font.setColor(IndexedColors.RED.getIndex());style.setFont(font);cell.setCellStyle(style);try (FileOutputStream fileOut = new FileOutputStream("styled_example.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();}System.out.println("样式设置成功!");}
}
样式设置功能
  • 字体Font 类用于设置字体样式(如加粗、颜色)。

  • 单元格样式CellStyle 用于应用字体和其他样式。


六、处理大文件的优化方案

对于大规模数据,使用 XSSFWorkbook 会占用大量内存,建议使用 SXSSFWorkbook,它支持流式写入:

java">import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;public class LargeExcelExample {public static void main(String[] args) {SXSSFWorkbook workbook = new SXSSFWorkbook();Sheet sheet = workbook.createSheet("LargeSheet");for (int i = 0; i < 100000; i++) {Row row = sheet.createRow(i);row.createCell(0).setCellValue("Row " + i);}try (FileOutputStream fileOut = new FileOutputStream("large_example.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();}System.out.println("大文件生成成功!");}
}


http://www.ppmy.cn/ops/151060.html

相关文章

用户中心项目教程(一)--Ant design pro初始化的学习和使用

文章目录 1.项目定位2.项目开发流程3.需求分析4.技术选型5.Ant design pro初始化5.1快速使用5.2初始化过程 6.项目依赖的报错处理6.1项目出现的问题6.2怎么查看问题6.3怎么解决报错6.4关于pnpm的安装 7.项目启动和运行7.1项目如何启动7.2双击跳转7.3登录和注册7.4页面分析7.5关…

Vue2+OpenLayers实现点位拖拽功能(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、初始化变量 3.2、创建一个点 3.3、将点添加到地图上 3.4、实现点位拖拽 3.5、完整代码 四、Gitee源码 一、案例截图 可以随意拖拽点位到你想要的位置 二、安装OpenLayers库 npm install ol 三、代码实现…

Red Hat8:搭建FTP服务器

一、匿名FTP访问 1、搭建yum源 2、安装VSFTPD 3、 打开配置文件 4、设置配置文件如下几个参数 5、重启vsftpd服务 6、进入图形化界面配置网络 添加IP地址 激活连接 7、查看IP地址 7、没有ftp命令就安装一个 8、遇到拒绝连接 &#xff08;1&#xff09;关闭防火墙 &#x…

分布式CAP理论介绍

分布式CAP理论是分布式系统设计中的一个核心概念,由加州大学伯克利分校的Eric Brewer教授在2000年的ACM研讨会上首次提出,随后在2002年由Seth Gilbert和Nancy Lynch从理论上证明。以下是对分布式CAP理论的详细剖析: 文章目录 一、CAP理论的基本概念二、CAP理论的取舍策略三、…

Git版本控制 – 创建和维护项目Repository

Git版本控制 – 创建和维护项目Repository Version Control by Git - Create and Maintain a Repository for a Project 1. 本地数据 a. 创建本地项目项目文件夹 b. 初始化本地Git环境 c. 执行相应Git命令 2. 远程数据Repository a. 创建remote 的Repository 1&#xff09…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址&#xff1a;https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

生成树机制实验

1 实验内容 1、基于已有代码,实现生成树运行机制,对于给定拓扑(four_node_ring.py),计算输出相应状态下的生成树拓扑 2、构造一个不少于7个节点,冗余链路不少于2条的拓扑,节点和端口的命名规则可参考four_node_ring.py,使用stp程序计算输出生成树拓扑 2 实验原理 一、…

STM32 FreeRTOS任务通知

目录 任务通知的简介 任务通知相关API函数介绍 任务通知的简介 任务通知是 FreeRTOS 中一种用于任务间通信的机制&#xff0c;它允许一个任务向其他任务发送简单的通知或信号&#xff0c;以实现任务间的同步和协作。任务通知通常用于替代二值信号量或事件标志组&#xff0c;提…