当前位置: 首页 > news >正文

Hutool - POI:让 Excel 与 Word 操作变得轻而易举

各位开发者们,在日常的 Java 开发工作里,处理 Excel 和 Word 文件是相当常见的需求。无论是从 Excel 里读取数据进行分析,还是将数据写入 Excel 生成报表,亦或是对 Word 文档进行内容编辑,传统的 Apache POI 库虽然功能强大,但使用起来往往比较复杂,代码量也不少。不过,有了 Hutool - POI 这个得力助手,一切都变得轻松起来了。它对 Apache POI 进行了封装,提供了简洁易用的 API,让我们可以更高效地操作 Excel 和 Word 文件。

一、Excel 操作:数据读写如此简单
1. 从 Excel 读取数据

假设我们有一个 Excel 文件,里面存储着员工信息,现在要把这些信息读取出来。

import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import java.util.List;
import java.util.Map;public class ExcelReadExample {public static void main(String[] args) {// 创建 Excel 读取器ExcelReader reader = ExcelUtil.getReader("employees.xlsx");// 读取数据,每行数据以 Map 形式存储List<Map<String, Object>> dataList = reader.readAll();for (Map<String, Object> row : dataList) {System.out.println("员工信息: " + row);}// 关闭读取器reader.close();}
}

在这段代码中,我们使用 ExcelUtil.getReader 方法创建了一个 Excel 读取器,指定要读取的 Excel 文件。然后调用 readAll 方法,将 Excel 中的所有数据读取出来,每行数据都以 Map 的形式存储,键是列名,值是单元格的值。最后遍历这个数据列表,输出每一行的员工信息。别忘了,使用完读取器后要调用 close 方法关闭它,释放资源。

2. 将数据写入 Excel

现在我们有一些员工数据,要把它们写入到一个新的 Excel 文件中。

import cn.hutool.poi.excel.ExcelWriter;
import cn.hutool.poi.excel.ExcelUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class ExcelWriteExample {public static void main(String[] args) {// 准备数据List<Map<String, Object>> dataList = new ArrayList<>();Map<String, Object> row1 = new HashMap<>();row1.put("姓名", "张三");row1.put("年龄", 25);dataList.add(row1);Map<String, Object> row2 = new HashMap<>();row2.put("姓名", "李四");row2.put("年龄", 30);dataList.add(row2);// 创建 Excel 写入器ExcelWriter writer = ExcelUtil.getWriter("new_employees.xlsx");// 写入数据writer.write(dataList, true);// 关闭写入器writer.close();System.out.println("数据已成功写入 Excel 文件");}
}

这里,我们先创建了一个包含员工信息的 List<Map<String, Object>> 数据列表。然后使用 ExcelUtil.getWriter 方法创建一个 Excel 写入器,指定要写入的文件名称。调用 write 方法将数据写入到 Excel 中,第二个参数 true 表示是否写入表头。最后关闭写入器,数据就成功写入到新的 Excel 文件里了。

二、Word 操作:内容编辑得心应手
1. 创建并填充 Word 文档

我们来创建一个简单的 Word 文档,并且往里面添加一些文本内容。

import cn.hutool.poi.word.WordUtil;
import java.io.File;public class WordCreateExample {public static void main(String[] args) {String content = "这是一个使用 Hutool - POI 创建的 Word 文档示例。";// 创建 Word 文档并写入内容WordUtil.writeWord(content, new File("example.docx"));System.out.println("Word 文档创建成功");}
}

在这个例子中,我们定义了一段文本内容,然后使用 WordUtil.writeWord 方法将这段内容写入到一个新的 Word 文档中,指定文档的存储路径和文件名。运行代码后,一个包含指定内容的 Word 文档就创建好了。

2. 读取 Word 文档内容

如果我们有一个已有的 Word 文档,想要读取其中的内容,也很容易实现。

import cn.hutool.poi.word.WordUtil;
import java.io.File;public class WordReadExample {public static void main(String[] args) {// 读取 Word 文档内容String content = WordUtil.readWord(new File("example.docx"));System.out.println("Word 文档内容: " + content);}
}

使用 WordUtil.readWord 方法,传入要读取的 Word 文件对象,就能把文档中的内容读取出来并以字符串的形式返回,方便我们进一步处理。

三、注意事项

在使用 Hutool - POI 进行 Excel 和 Word 操作时,也有一些需要留意的地方。对于 Excel 操作,要注意数据类型的匹配,确保写入的数据类型和 Excel 单元格的类型兼容。同时,处理大量数据时,要考虑性能问题,可以采用分批读取和写入的方式。对于 Word 操作,不同版本的 Word 文档可能会有一些格式差异,在处理时要进行充分的测试。另外,操作文件时要确保文件的读写权限,避免出现权限不足的错误。

总之,Hutool - POI 为我们提供了一种简单、高效的方式来操作 Excel 和 Word 文件。无论是新手开发者还是有经验的老程序员,都能借助它快速实现文件处理的需求,提升开发效率,让我们把更多的精力放在业务逻辑上。大家不妨在自己的项目中试试,相信它会给你带来不错的体验!

相关文章:

Hutool - POI:让 Excel 与 Word 操作变得轻而易举

各位开发者们&#xff0c;在日常的 Java 开发工作里&#xff0c;处理 Excel 和 Word 文件是相当常见的需求。无论是从 Excel 里读取数据进行分析&#xff0c;还是将数据写入 Excel 生成报表&#xff0c;亦或是对 Word 文档进行内容编辑&#xff0c;传统的 Apache POI 库虽然功能…...

IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程

背景&#xff1a;最近DeepSeek比较火嘛&#xff0c;然后在githup上也看到了GitHub Copilot&#xff0c;就想着现在AI的准确率已经可以提高工作效率了。所以从网上找了一些编程插件&#xff0c;发现Proxy支持的模型比较多&#xff0c;通用性和适配性比较好。所以本文记录一下pro…...

Iceberg Catalog

使用限制​ 支持 Iceberg V1/V2 表格式。支持 Position Delete。2.1.3 版本开始支持 Equality Delete。支持 Parquet 文件格式2.1.3 版本开始支持 ORC 文件格式。 创建 Catalog​ 基于 Hive Metastore 创建 Catalog​ 和 Hive Catalog 基本一致&#xff0c;这里仅给出简单示…...

2025年2月个人工作生活总结

本文为 2025年2月工作生活总结。 工作记录 AI浪潮 AI非常火&#xff0c;春节至今&#xff0c;到处充斥着大量和AI、DeepSeek有关的新闻。领导也一再强调要用AI&#xff0c;甚至纳入到新一年的考核里。再往上&#xff0c;大领导开会的新闻稿里也作出要求&#xff0c;不能停下脚…...

vscode java环境中文乱码的问题

先说我的结论&#xff1a; 由于我的系统是windows的&#xff0c;所以vscode使用的是默认gbk的编码进行的。 但是我的目的是全部都使用utf-8&#xff0c;因为我的程序始终是要去linux上去运行的&#xff0c;总不能在本地是好的&#xff0c;然后到服务器上就不行了吧&#xff0c;…...

Java数据结构第十五期:走进二叉树的奇妙世界(四)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、二叉树OJ练习题&#xff08;续&#xff09; 1.1. 二叉树的层序遍历 1.2. 二叉树的最近公共祖先 1.3. 从前序与中序遍历序列构造二叉树 1.4. 从中序与后序遍历序列构造二叉树 1.5. 根据二叉树创建…...

【MySQL】CAST()在MySQL中的用法以及其他常用的数据类型转换函数

1. cast() CAST() 在 MySQL 中用于将一个表达式的类型转换为另一个类型。这在处理不同类型的数据时非常有用&#xff0c;比如将字符串转换为数字&#xff0c;或者将浮点数转换为整数等。 1.1 CAST() 函数的基本语法 CAST() 函数的基本语法如下&#xff1a; CAST(expression…...

使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目

文章目录 概要初始化Truffle项目创建编写合约编译合约配置Ganache修改truffle-config.js文件编写迁移文件部署合约使用Truffle 控制台使用MetaMask和VueWeb3与链交互 概要 使用Truffle、Ganache、MetaMask、VueWeb3完成的一个简单区块链项目。 初始化Truffle项目 安装好truf…...

初出茅庐的小李博客之按键驱动库使用

驱动库介绍 源码地址&#xff1a;https://github.com/jiejieTop/ButtonDrive 使用只需3步&#xff0c;创建按键&#xff0c;按键事件与回调处理函数链接映射&#xff0c;周期检查按键&#xff0c;支持单双击、连按、长按&#xff1b;采用回调处理按键事件&#xff08;自定义消…...

如何调试Linux内核?

通过创建一个最小的根文件系统&#xff0c;并使用QEMU和GDB进行调试。 1.准备工作环境 确保系统上安装了所有必要的工具和依赖项。 sudo apt-get update //更新一下软件包 sudo apt-get install build-essential git libncurses-dev bison flex libssl-dev qemu-system-x…...

ECharts组件封装教程:Vue3中的实践与探索

在日常的前端开发中,ECharts 作为一款强大且易用的图表库,被广泛应用于数据可视化场景。为了更好地在 Vue3 项目中复用 ECharts 功能,我们可以将其封装成一个组件。本文将带大家一步步实现 ECharts 的 Vue3 组件封装,并演示如何在父组件中调用和使用。 一、封装 ECharts 组…...

NAT 代理服务 内网穿透

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; NAT 技术背景二&#xff1a;&#x1f525; NAT IP 转换过程三&#xff1a;&#x1f525; NAPT四&#xff1a;&#x1f525; 代理服务器&#x1f98b; 正向…...

CAN硬件协议详解

一、基本理论&#xff1a; 1、CAN的总线结构&#xff1a; CAN总线 网络结构 有 闭环和开环 两种形式&#xff1b;无论实际的网络多复杂&#xff0c;都离不开这两种基本结构。 闭环结构的CAN总线网络&#xff0c;总线的两端各并联一个120Ω的电阻&#xff0c;两…...

网络安全等级保护:网络安全等级保护基本技术

下面我们概括性探讨一下等级保护用到的一些技术&#xff0c;有关这些技术的每一个方面的每一个部分都可以是一部大块头&#xff0c;甚至一部大块头都无法介绍清楚&#xff0c;需要系列性的书籍去展开&#xff0c;所以这里也只能做到抛砖而已。期望起到抛砖引玉的作用&#xff0…...

信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效

随着数据传输、存储及信息技术的飞速发展&#xff0c;信息安全保护已成为重中之重。各安全领域对跨网数据交互的需求日益迫切&#xff0c;数据传输的安全可靠性成为不可忽视的关键。为满足业务需求并遵守保密规范&#xff0c;针对于涉及重要秘密信息&#xff0c;需做到安全的物…...

数据结构课程设计(java实现)---九宫格游戏,也称幻方

【问题描述】 九宫格&#xff0c;一款数字游戏&#xff0c;起源于河图洛书&#xff0c;与洛书是中国古代流传下来的两幅神秘图案&#xff0c;历来被认为是河洛文化的滥觞&#xff0c;中华文明的源头&#xff0c;被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大…...

[思考记录]AI时代下,悄然的改变

尝试用 xAI-Grok 去了解DS开源周的信息&#xff0c;有那么点被Grok的输出惊艳到。“请你以技术编辑的角色&#xff0c;重点参考官方文档&#xff0c;介绍DeepSeek开源周的内容&#xff0c;写一篇技术分享文章。”&#xff0c;得到的文字看起来很是舒服&#xff0c;内容靠谱、结…...

JAVA笔记【一】

现实 &#xff08;抽象&#xff09; 类 &#xff08;创建&#xff09; 对象 特点&#xff1a; 1.面向对象 2.跨平台 3.安全性 4.多线程 java程序基本结构 1. java源代码文件实际是普通的文本文件&#xff0c;源代码文件必须是.java扩展名&#xff0c;且必须小写 2. …...

[Java基础] 常用注解

文章目录 1. 元注解2. 非元注解2.1 常用JDK自带注解2.2 常用Spring相关注解2.2.1 在Spring框架中&#xff0c;注解用于简化配置和增强代码的可读性。以下是常用的Spring注解的一部分2.2.2 针对controller的相关注解2.2.3 AOP相关注解2.2.4 Enable系列注解 2.3 常用Lombok注解 1…...

uvm中的run_test作用

在SystemVerilog和UVM验证环境中&#xff0c;run_test() 是启动UVM仿真流程的核心函数。它负责初始化UVM框架、创建测试用例实例&#xff0c;并触发UVM的Phase机制来执行验证环境的构建和运行 1. run_test() 的作用 run_test() 是UVM提供的内置函数&#xff0c;定义在UVM库中…...

fflate错误处理完全指南:如何优雅处理压缩异常

fflate错误处理完全指南&#xff1a;如何优雅处理压缩异常 【免费下载链接】fflate High performance (de)compression in an 8kB package 项目地址: https://gitcode.com/gh_mirrors/ff/fflate fflate是一个高性能的JavaScript压缩解压库&#xff0c;但在处理压缩数据时…...

在FreeRTOS上为Zynq CAN驱动添加任务间通信:一个实用的数据收发框架搭建

在FreeRTOS上为Zynq CAN驱动构建高效任务间通信框架 当我们在Zynq平台上开发基于FreeRTOS的CAN总线应用时&#xff0c;如何安全高效地在中断服务程序(ISR)与任务之间传递数据&#xff0c;是构建稳定系统的关键挑战。本文将深入探讨一个经过实战检验的解决方案——通过消息队列和…...

如何选择适合你的Python Web服务器:uvicorn与gunicorn深度对比

1. 为什么需要关注Web服务器选择&#xff1f; 当你用Python开发完一个Web应用后&#xff0c;最后一步就是把它部署上线。这时候你会发现&#xff0c;直接运行python app.py这种方式根本撑不住几个用户访问。我刚开始做项目时就犯过这个错误&#xff0c;结果上线当天服务器就直接…...

Jupyter notebook学习容易忘的点

数字数字计算符合常识选择run selected cell就能运行单个块字符串字符串也能计算转义字符\n 表示换行\t 表示tab\\ 表示\ 斜杠本身...

MAX31865嵌入式驱动库:高精度RTD温度测量实战指南

1. 项目概述7Semi_MAX31865 是一款面向工业级高精度温度测量场景的嵌入式驱动库&#xff0c;专为 Maxim Integrated&#xff08;现属 Analog Devices&#xff09;MAX31865 RTD-to-digital 转换器芯片设计。该库并非简单封装&#xff0c;而是以底层硬件控制为核心&#xff0c;提…...

Arduino嵌入式多设备协同控制模板

1. 项目概述“TongHopThuVienCon1”&#xff08;越南语&#xff0c;意为“子库集成1号”&#xff09;并非一个独立功能完备的嵌入式开源库&#xff0c;而是一个面向Arduino平台的工程模板项目&#xff08;Arduino_Project_Template&#xff09;。其核心价值不在于提供特定外设驱…...

C语言核心特性与工程实践详解

1. C语言核心特性解析C语言作为一门经典的编程语言&#xff0c;其核心特性决定了它在系统编程和嵌入式开发中的不可替代地位。让我们从底层机制开始剖析&#xff1a;1.1 静态类型与编译执行C语言采用静态类型系统&#xff0c;这意味着所有变量必须在编译前明确声明其类型。这种…...

如何用嘎嘎降AI处理文献综述部分:综述专项降AI教程

如何用嘎嘎降AI处理文献综述部分&#xff1a;综述专项降AI教程 这篇教程来自实操经验。帮三个同学处理过论文AI率&#xff0c;加上自己的&#xff0c;前后操作了十几次。把流程总结成教程&#xff0c;尽量详细。 核心工具推荐嘎嘎降AI&#xff08;www.aigcleaner.com&#xf…...

2025届学术党必备的六大AI科研工具推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减小AIGC印记的关键之处在于模仿人类创作的非直线特性。其一&#xff0c;改变句式架构&#…...

实战指南:基于快马平台生成企业级cc switch管理系统,助力游戏项目开发

今天想和大家分享一个在游戏开发中特别实用的技术——CC Switch系统。这个系统在商业游戏项目中经常被用来做调试和功能开关控制&#xff0c;最近我在InsCode(快马)平台上快速实现了一个完整的企业级解决方案&#xff0c;整个过程特别顺畅。 先说说什么是CC Switch。简单理解就…...