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 文件。無論是新手開發者還是有經驗的老程序員,都能借助它快速實現文件處理的需求,提升開發效率,讓我們把更多的精力放在業務邏輯上。大家不妨在自己的項目中試試,相信它會給你帶來不錯的體驗!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71032.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫操作命令詳解:CREATE、ALTER、DROP 的使用與實踐

引言? 數據庫是存儲和管理數據的核心工具&#xff0c;而 ?DDL&#xff08;Data Definition Language&#xff0c;數據定義語言&#xff09;?? 是構建和調整數據庫結構的基石。本文將通過實際示例&#xff0c;詳細講解 CREATE&#xff08;創建&#xff09;、ALTER&#xff0…

Asp.Net Core WebAPI開發教程(入門)

一、Asp.Net Core WebAPI項目創建 二、Asp.Net Core WebApi/Mvc路由定義 二、Asp.Net Core WebAPI 請求案例 Asp.Net WebApi Get請求整理&#xff08;一&#xff09; Asp.Net WebApi Post請求整理&#xff08;一&#xff09; Asp.Net WebApi Action命名中已‘Get’開頭問題 …

VSCode大的JSON數據不能折疊問題

修改editor.foldingMaximumRegions為10000解決&#xff0c;默認只支持5000 在 VSCode 中&#xff0c;默認的 JSON 文件折疊功能對嵌套層級較深的數據支持有限。以下是幾種解決嵌套 4 層以上數據無法折疊的方法&#xff1a; 1. 使用擴展插件 安裝支持更復雜折疊功能的插件&am…

IPoIB源碼深度解析:如何基于TCP/IP協議棧實現高性能InfiniBand通信

一、IPoIB的核心設計理念 IPoIB(IP over InfiniBand)是一種在InfiniBand網絡上承載IP流量的技術,其核心目標是在不修改上層應用的前提下,利用InfiniBand的高帶寬和低延遲特性。與自定義協議棧不同,IPoIB通過深度集成到Linux內核TCP/IP協議棧中,將InfiniBand設備抽象為標…

Vue學習教程-18Vue單文件組件

文章目錄 前言一、單文件組件的構成二、組件引用三、組件的應用舉例1.組件實例2.顯示結果 前言 Vue 單文件組件&#xff08;又名 *.vue 文件&#xff0c;縮寫為 SFC&#xff09;是一種特殊的文件格式&#xff0c;它允許將 Vue 組件的模板、邏輯 與 樣式封裝在單個文件中。組件…

掌握 findIndex、push 和 splice:打造微信小程序的靈活圖片上傳功能?

文章目錄 ? 掌握 findIndex、push 和 splice&#xff1a;打造微信小程序的靈活圖片上傳功能 &#x1f31f;示例場景&#xff1a;小程序圖片上傳&#x1f33c; 認識 findIndex定義語法在代碼中的應用示例當前行為 &#x1f680; 認識 push定義語法在代碼中的應用示例特點 ?? …

微服務即時通信系統---(七)文件管理子服務

目錄 功能設計 模塊劃分 業務接口/功能示意圖 服務實現流程 服務代碼實現 封裝文件操作模塊(utils.hpp) 獲取唯一標識ID 文件讀操作 文件寫操作 編寫proto文件 文件元信息 文件管理proto 單文件上傳 多文件上傳 單文件下載 多文件下載 RPC調用 服務端創建子…

fluent-ffmpeg 依賴詳解

fluent-ffmpeg 是一個用于在 Node.js 環境中與 FFmpeg 進行交互的強大庫&#xff0c;它提供了流暢的 API 來執行各種音視頻處理任務&#xff0c;如轉碼、剪輯、合并等。 一、安裝 npm install fluent-ffmpeg二、基本使用 要使用 fluent-ffmpeg&#xff0c;首先需要確保系統中…

第16天:C++多線程完全指南 - 從基礎到現代并發編程

第16天&#xff1a;C多線程完全指南 - 從基礎到現代并發編程 一、多線程基礎概念 1. 線程創建與管理&#xff08;C11&#xff09; #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…

Pwntools 的詳細介紹、安裝指南、配置說明

Pwntools&#xff1a;Python 開源安全工具箱 一、Pwntools 簡介 Pwntools 是一個由 Security researcher 開發的 高效 Python 工具庫&#xff0c;專為密碼學研究、漏洞利用、協議分析和逆向工程設計。它集成了數百個底層工具的功能&#xff0c;提供統一的 Python API 接口&am…

ES的簡單講解

功能 &#xff1a; 文檔存儲 與 文檔搜索 特點&#xff1a;比如有一個文檔名 “你好” 可以用‘你‘&#xff0c;好&#xff0c;你好都可以搜索到這個文檔 ES核心概念 類似于數據庫中表的概念&#xff0c;在表的概念下又對數據集合進行了細分 ? ES_Client查詢接口 cpr::R…

leetcode_字典樹 139. 單詞拆分

139. 單詞拆分 給你一個字符串 s 和一個字符串列表 wordDict 作為字典。如果可以利用字典中出現的一個或多個單詞拼接出 s 則返回 true。 注意&#xff1a;不要求字典中出現的單詞全部都使用&#xff0c;并且字典中的單詞可以重復使用。 思路: 定義狀態&#xff1a; 設dp[i]表…

寶塔安裝向量數據庫-Milvus

注&#xff1a;寶塔需要安裝好docker容器組件&#xff01; 1、純血寶塔安裝 1.1 在線上鏡像中&#xff0c;拉取milvus鏡像&#xff0c;創建milvus容器 1.2 安裝milvus管理工具ATTU&#xff1b;同樣方式拉取線上鏡像創建attu容器 2、自定義安裝 2.1修改配置 {"registry-…

【K8S】Kubernetes 基本架構、節點類型及運行流程詳解(附架構圖及流程圖)

Kubernetes 架構 k8s 集群 多個 master node 多個 work nodeMaster 節點&#xff08;主節點&#xff09;&#xff1a;負責集群的管理任務&#xff0c;包括調度容器、維護集群狀態、監控集群、管理服務發現等。Worker 節點&#xff08;工作節點&#xff09;&#xff1a;實際運…

數據庫MySQL,在終端輸入后,提示不是內部命令等

【解決問題】mysql提示不是內部或外部命令&#xff0c;也不是可運行的程序 一般這種問題是因為沒有在系統變量里面添加MySQL的可執行路徑 以下是添加可執行路徑的方法&#xff1a; 第一步&#xff1a;winR輸入services.msc 然后找到MySQL&#xff0c;右擊屬性并復制MySQL的可執…

Python 中的線程模塊

Python 中的線程模塊 Python 中的線程模塊 Python 中的線程模塊 thread 模塊是一個標準模塊&#xff0c;提供了簡單易用的方法為程序構建多線程。在幕后&#xff0c;該模塊使用較低級的 _thread 模塊&#xff0c;在 Python 早期版本中&#xff0c;該模塊是多線程的流行選擇。 …

PhotoShop學習01

了解Photoshop 這里省略了Photoshop的軟件安裝&#xff0c;請自行查找資源下載。 1.打開圖片 下圖為啟動photoshop后出現的界面&#xff0c;我們可以通過創建新文件或打開已有文件來啟用photoshop的工作界面。 可以通過左邊的按鈕進行新文件的創建或打開已有文件。 也可以點…

Python大戰Java:AI時代的編程語言‘復仇者聯盟‘能否換C位?

背景 當Java程序員在咖啡機前念叨’Python憑什么搶我飯碗’時&#xff0c;AI實驗室里的Python工程師正用5行代碼召喚出神經網絡——這場編程語言的’權力的游戲’&#xff0c;勝負可能比你想象的更魔幻&#xff01;" 一、茶水間里的戰爭&#xff1a;Java和Python的相愛相…

GitCode 助力 python-office:開啟 Python 自動化辦公新生態

項目倉庫&#xff1a;https://gitcode.com/CoderWanFeng1/python-office 源于需求洞察&#xff0c;打造 Python 辦公神器 項目作者程序員晚楓在運營擁有 14w 粉絲的 B 站賬號 “Python 自動化辦公社區” 時&#xff0c;敏銳察覺到非程序員群體對 Python 學習的強烈需求。在數字…

javaweb + AI day03

一、web基礎 二、分層解耦 注意&#xff1a;bean的名字默認是類名的首字母小寫&#xff01;&#xff01;&#xff01; 三、Mysql count不參與null值統計 四、JDBC 五、MyBatis 數據庫連接池