Java實(shí)現(xiàn)Excel與TXT文本的高效互轉(zhuǎn)
在日常開(kāi)發(fā)中,我們經(jīng)常需要在不同的數(shù)據(jù)存儲(chǔ)格式之間進(jìn)行轉(zhuǎn)換,其中 Excel 和 TXT 是最常見(jiàn)的兩種格式。Excel 以表格形式存儲(chǔ)數(shù)據(jù),支持豐富的格式、公式和多種數(shù)據(jù)類(lèi)型,適合報(bào)表生成、統(tǒng)計(jì)分析等場(chǎng)景。TXT 是純文本格式,簡(jiǎn)單輕量,便于跨平臺(tái)傳輸、日志存儲(chǔ)或數(shù)據(jù)交換。
在實(shí)際項(xiàng)目中,經(jīng)常需要將 Excel 文件導(dǎo)出為 TXT,或者將 TXT 導(dǎo)入 Excel 進(jìn)行進(jìn)一步處理。例如,日志分析系統(tǒng)可能需要將 Excel 報(bào)表轉(zhuǎn)換為 TXT 供腳本處理;數(shù)據(jù)采集系統(tǒng)可能需要將 TXT 文件整理成 Excel 便于可視化和匯總。
本文將分享如何在 Java 中高效實(shí)現(xiàn) Excel 與 TXT 的互轉(zhuǎn),并提供完整的示例代碼和操作說(shuō)明。
一、準(zhǔn)備工作
在開(kāi)始編寫(xiě)代碼之前,需要完成以下準(zhǔn)備:
準(zhǔn)備示例文件
- Excel 文件(
.xlsx或.xls)用于導(dǎo)出 TXT 測(cè)試。 - TXT 文件,每行用固定分隔符(如空格或制表符)分隔,用于導(dǎo)入 Excel 測(cè)試。
理解數(shù)據(jù)結(jié)構(gòu)
Excel 數(shù)據(jù)按行列組織,每個(gè)單元格對(duì)應(yīng)一個(gè)字段;TXT 文件每行是一個(gè)記錄,通過(guò)分隔符拆分字段。在互轉(zhuǎn)時(shí),需要保證字段順序和數(shù)量匹配。
庫(kù)依賴(lài)安裝
本文使用的庫(kù)是 Spire.XLS for Java,它可以直接讀取、寫(xiě)入和轉(zhuǎn)換 Excel .xls 和 .xlsx等文件,無(wú)需依賴(lài) Microsoft Excel,本地或服務(wù)器環(huán)境都可以使用。
如果使用 Maven,可以在 pom.xml 中添加如下依賴(lài):
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>13.9.1</version>
</dependency>
二、Excel 轉(zhuǎn) TXT
Spire.XLS 提供了直接將工作表保存為 TXT 文件的方法,無(wú)需手動(dòng)遍歷單元格,同時(shí)可以指定列分隔符和字符編碼。
示例代碼
import com.spire.xls.*;
import java.nio.charset.Charset;
public class ExcelToTxt {
public static void main(String[] args) {
// 創(chuàng)建 Workbook 對(duì)象,用于操作 Excel 文件
Workbook workbook = new Workbook();
// 加載 Excel 文件
workbook.loadFromFile("sample.xlsx");
// 獲取第一個(gè)工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 設(shè)置字符編碼為 UTF-8,確保中文和特殊字符正確顯示
Charset charset = Charset.forName("UTF-8");
// 將工作表保存為 TXT 文件
// 第二個(gè)參數(shù) " " 表示列之間使用空格分隔,也可以改為 "\t" 或 "," 等
worksheet.saveToFile("ExcelToTxt.txt", " ", charset);
// 提示導(dǎo)出完成
System.out.println("Excel 導(dǎo)出 TXT 完成");
}
}
代碼說(shuō)明:
Worksheet.saveToFile可直接將工作表導(dǎo)出為文本文件,不需要循環(huán)讀取單元格。- 第二個(gè)參數(shù)可以設(shè)置列間分隔符,比如空格 " " 或制表符 "\t"。
- 指定 UTF-8 編碼可確保中文或特殊字符不會(huì)出現(xiàn)亂碼。
- 這種方式適合數(shù)據(jù)量較大時(shí)快速導(dǎo)出。
三、TXT 轉(zhuǎn) Excel
將 TXT 導(dǎo)入 Excel 時(shí),需要按行讀取文本,拆分字段,然后寫(xiě)入對(duì)應(yīng)單元格。
示例代碼
import com.spire.xls.*;
import java.io.*;
public class TxtToExcel {
public static void main(String[] args) {
// 創(chuàng)建 Workbook 對(duì)象,用于寫(xiě)入 Excel
Workbook workbook = new Workbook();
// 獲取第一個(gè)工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 使用 BufferedReader 按行讀取 TXT 文件
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
String line;
int rowIndex = 0; // 當(dāng)前寫(xiě)入的行號(hào)
// 逐行讀取 TXT 文件
while ((line = reader.readLine()) != null) {
// 按空格拆分每行的字段
String[] values = line.split(" ");
// 將拆分后的字段寫(xiě)入 Excel 單元格
for (int colIndex = 0; colIndex < values.length; colIndex++) {
sheet.getCellRange(rowIndex, colIndex).setText(values[colIndex]);
}
// 行號(hào)遞增,寫(xiě)入下一行
rowIndex++;
}
// 保存 Excel 文件,指定 Excel 版本為 2013
workbook.saveToFile("output.xlsx", ExcelVersion.Version2013);
// 提示導(dǎo)入完成
System.out.println("TXT 導(dǎo)入 Excel 完成");
} catch (IOException e) {
// 打印異常信息
e.printStackTrace();
}
}
}
代碼說(shuō)明:
- 使用
BufferedReader按行讀取,可以處理較大文件而不會(huì)一次性占用過(guò)多內(nèi)存。 - 拆分字段時(shí),分隔符要與生成 TXT 文件時(shí)一致,確保數(shù)據(jù)列正確對(duì)應(yīng)。
- 使用
setText寫(xiě)入單元格,操作簡(jiǎn)單直觀。
四、性能與使用建議
在處理 Excel 與 TXT 轉(zhuǎn)換時(shí),可以注意以下幾點(diǎn):
1.緩沖讀寫(xiě)
使用 BufferedReader 或 BufferedWriter 進(jìn)行文件讀寫(xiě),提高效率。
2.統(tǒng)一分隔符
導(dǎo)出和導(dǎo)入使用相同的分隔符,避免列錯(cuò)位。
3.統(tǒng)一編碼
確保文件讀寫(xiě)編碼一致,例如 UTF-8,防止中文或特殊字符亂碼。
4.大數(shù)據(jù)量處理
對(duì)于數(shù)據(jù)量非常大時(shí),可以按批次處理或拆分文件,減少內(nèi)存壓力。
五、小結(jié)
本文展示了在 Java 中實(shí)現(xiàn) Excel 與 TXT 文件互轉(zhuǎn)的方法:
- Excel 轉(zhuǎn) TXT:使用
Worksheet.saveToFile可快速導(dǎo)出 TXT,無(wú)需手動(dòng)循環(huán)單元格。 - TXT 轉(zhuǎn) Excel:逐行讀取 TXT,并按列寫(xiě)入單元格,操作直觀。
通過(guò)這些方法,可以在日常開(kāi)發(fā)中方便地進(jìn)行報(bào)表導(dǎo)出、日志分析或數(shù)據(jù)遷移,同時(shí)保證數(shù)據(jù)準(zhǔn)確性和編碼正確性。
到此這篇關(guān)于Java實(shí)現(xiàn)Excel與TXT文本的高效互轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Java Excel與TXT互轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring事務(wù)失效場(chǎng)景實(shí)例詳解
實(shí)際項(xiàng)目開(kāi)發(fā)中,如果涉及到多張表操作時(shí),為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會(huì)采用事務(wù)機(jī)制,好多小伙伴可能只是簡(jiǎn)單了解一下,遇到事務(wù)失效的情況,便會(huì)無(wú)從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2022-03-03
IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)
本文主要介紹了IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn),通過(guò)簡(jiǎn)單的步驟,您可以修改項(xiàng)目名稱(chēng)并在打包時(shí)使用新的名稱(chēng),具有一定的參考價(jià)值,感興趣的可以了解下2023-08-08
如何實(shí)現(xiàn)java Iterator迭代器功能
這篇文章主要介紹了如何實(shí)現(xiàn)java Iterator迭代器功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
MyBatis中執(zhí)行相關(guān)SQL語(yǔ)句的方法
本文主要介紹了MyBatis中執(zhí)行相關(guān)SQL語(yǔ)句的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Maven中依賴(lài)沖突的排查和修復(fù)全流程指南
依賴(lài)沖突是寫(xiě)?Java?項(xiàng)目時(shí)最常見(jiàn)、也最煩的坑之一,特別是在大型項(xiàng)目、Spring?Boot、多模塊工程里,這篇文章會(huì)帶你用最實(shí)用、最開(kāi)發(fā)者視角的方法來(lái)解決?Maven?依賴(lài)沖突,有需要的可以了解下2025-12-12
如何使用Spring Batch進(jìn)行批處理任務(wù)管理
本文介紹了如何配置Spring Batch、如何創(chuàng)建批處理任務(wù),以及如何讀取和寫(xiě)入數(shù)據(jù),希望通過(guò)本文的介紹,你能更好地理解和使用Spring Batch來(lái)管理批處理任務(wù),感興趣的朋友跟隨小編一起看看吧2024-08-08
Spring IOC的相關(guān)注解運(yùn)用詳解
這篇文章主要介紹了Spring IOC的相關(guān)注解運(yùn)用詳解,純注解實(shí)現(xiàn)IOC需要一個(gè)Java類(lèi)代替xml文件,這個(gè)Java類(lèi)上方需要添加@Configuration,表示該類(lèi)是一個(gè)配置類(lèi),作用是代替配置文件,需要的朋友可以參考下2023-08-08
Springboot應(yīng)用gradle?Plugin示例詳解
這篇文章主要介紹了Springboot應(yīng)用gradle?Plugin詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

