使用 Java 操作 Excel 的实用教程

news/2025/1/15 17:30:57/

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

🔍 博客内容包括:

  • 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/news/1563378.html

相关文章

Linux(CentOS7)安装JDK和Maven

文章目录 CentOS软件安装方式JDK安装Maven安装 CentOS软件安装方式 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布&#xff0c;只要解压&#xff0c;修改配置即可。例如tomcatrpm(redhat package manager)安装软件已经按照redhat的包管理规范进行打包&#x…

.NET内网实战:反射实现Rundll32绕过防护

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。 02基本介绍 本文内容部分节选自小报童《.NET 通过反射技术实现Rundll32功能绕过安全防护》&#xff0c;目前已有280位朋友抢先预定&a…

matlab使用 BP 神经网络进行数据预测的完整流程,包括数据读取、数据预处理等等

%% 初始化程序 warning off % 关闭报警信息 close all % 关闭所有图窗 clear % 清空变量 clc % 清空命令行 setdemorandstream(172) %设置随机种子为1%% 读取数据 data xlsread(Y.xlsx); %% 划分训练集…

前端网页开发学习(HTML+CSS+JS)有这一篇就够!

目录 HTML教程 ▐ 概述 ▐ 基础语法 ▐ 文本标签 ▐ 列表标签 ▐ 表格标签 ▐ 表单标签 CSS教程 ▐ 概述 ▐ 基础语法 ▐ 选择器 ▐ 修饰文本 ▐ 修饰背景 ▐ 透明度 ▐ 伪类 ▐ 盒子模型 ▐ 浮动 ▐ 定位 JavaScript教程 ▐ 概述 ▐ 基础语法 ▐ 函数 …

Java配置log4j日志打印

1. 引入依赖 <dependencies><!-- Log4j 2依赖 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>1.2.14</version> <!-- 可以根据需要修改版本 --></…

[大模型]本地离线运行openwebui+ollama容器化部署

本地离线运行Openweb-ui ollama容器化部署 说明安装internet操作内网操作 问题线程启动错误最终命令 总结 说明 最近公司有一个在内网部署一个离线大模型的需求&#xff0c;网络是离线状态&#xff0c;服务器有A100GPU&#xff0c;一开始是想折腾开源chatGML4大模型&#xff0…

Trimble自动化激光监测支持历史遗产实现可持续发展【沪敖3D】

故事桥&#xff08;Story Bridge&#xff09;位于澳大利亚布里斯班&#xff0c;建造于1940年&#xff0c;全长777米&#xff0c;横跨布里斯班河&#xff0c;可载汽车、自行车和行人往返于布里斯班的北部和南部郊区。故事桥是澳大利亚最长的悬臂桥&#xff0c;是全世界两座手工建…

SpringBoot 基础学习

对于SpringBoot的了解&#xff0c;在初学者的角度看来&#xff0c;它是一种工具&#xff0c;用于简化一个Spring项目的初始搭建和开发过程。 1 入门案例 1.1 项目的创建 有四种方法创建&#xff0c;可以通过idea快捷创建&#xff0c;Spring的官网创建&#xff0c;阿里云创建&am…