使用Java實(shí)現(xiàn)將Excel工作表轉(zhuǎn)換為CSV格式
在日常開發(fā)中,Excel 文件(.xls/.xlsx)是數(shù)據(jù)存儲(chǔ)和交換的常用格式,但在數(shù)據(jù)導(dǎo)入、批量處理等場(chǎng)景下,輕量且純文本的 CSV 格式更具優(yōu)勢(shì)。本文將介紹如何使用 Spire.XLS for Java 組件,高效實(shí)現(xiàn) Excel 文件到 CSV 格式的轉(zhuǎn)換,涵蓋環(huán)境準(zhǔn)備、核心步驟、完整代碼及關(guān)鍵說明,幫助開發(fā)者快速落地相關(guān)需求。
引入依賴(Maven方式)
在項(xiàng)目的pom.xml文件中添加Spire.XLS的依賴配置(查詢最新版本):
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.10.5</version>
</dependency>
Spire.XLS for Java兼容Excel 97-2021的所有版本格式。其API設(shè)計(jì)簡潔,封裝了復(fù)雜的Excel底層邏輯,代碼簡單易懂。
Excel 轉(zhuǎn) CSV 核心實(shí)現(xiàn)步驟
Excel轉(zhuǎn)CSV的核心邏輯是:加載Excel文件 → 定位目標(biāo)工作表 → 調(diào)用轉(zhuǎn)換API保存為CSV格式。以下分 “單工作表轉(zhuǎn)換” 和 “多工作表批量轉(zhuǎn)換” 兩種場(chǎng)景展開。
場(chǎng)景1:單個(gè)工作表轉(zhuǎn)換為CSV
適用于僅需提取Excel中某一個(gè)工作表(如第一個(gè)工作表)數(shù)據(jù)的場(chǎng)景,代碼如下:
import com.spire.xls.*;
import java.nio.charset.Charset;
public class ExcelToCsvSingleSheet {
public static void main(String[] args) {
// 創(chuàng)建Workbook對(duì)象,加載Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("E:\\PythonExcel\\產(chǎn)品.xlsx");
// 獲取目標(biāo)工作表(索引從0開始,0表示第一個(gè)工作表)
Worksheet worksheet = workbook.getWorksheets().get(0);
// (可選)若已知工作表名稱,可通過名稱獲?。簑orkbook.getWorksheets().get("Sheet1")
// 將工作表保存為CSV格式,指定輸出路徑、分隔符和編碼(UTF-8避免中文亂碼)
worksheet.saveToFile("single_sheet.csv", ",", Charset.forName("UTF-8"));
// 釋放資源
workbook.dispose();
}
}
代碼說明
- 加載Excel文件:
Workbook是Spire.XLS的核心類,負(fù)責(zé)Excel文件的整體管理,loadFromFile()方法支持加載.xls和.xlsx格式; - 獲取工作表:通過索引(
get(0))或名稱(get("Sheet1"))定位工作表,需確保索引不越界(若Excel只有1個(gè)工作表,索引最大為0); - 保存為CSV:
saveToFile()的第三個(gè)參數(shù)指定編碼(推薦UTF-8,避免中文亂碼),若不指定編碼,默認(rèn)使用系統(tǒng)編碼(可能導(dǎo)致亂碼)。
CSV 輸出文件:

場(chǎng)景2:多工作表批量轉(zhuǎn)換為CSV
若Excel文件包含多個(gè)工作表,需將每個(gè)工作表單獨(dú)轉(zhuǎn)為CSV(如Sheet1.csv、Sheet2.csv),可通過遍歷工作表實(shí)現(xiàn)批量轉(zhuǎn)換:
import com.spire.xls.*;
import java.nio.charset.Charset;
public class ExcelToCsvMultiSheets {
public static void main(String[] args) {
// 加載Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("E:\\PythonExcel\\數(shù)據(jù)表.xlsx");
// 遍歷所有工作表
for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
Worksheet worksheet = workbook.getWorksheets().get(i);
// 獲取工作表名稱,作為CSV文件名的一部分
String sheetName = worksheet.getName();
// 定義CSV輸出路徑
String csvOutputPath = "Output/" + sheetName + ".csv";
// 保存為CSV
worksheet.saveToFile(csvOutputPath,",", Charset.forName("UTF-8"));
}
// 釋放資源
workbook.dispose();
}
}
自定義CSV分隔符:部分場(chǎng)景需用分號(hào)(;)或制表符(\t)作為 CSV 分隔符,可通過saveToFile()的第二個(gè)參數(shù)指定
關(guān)鍵注意事項(xiàng)
- 編碼問題:CSV 文件的編碼需與后續(xù)使用場(chǎng)景匹配(如導(dǎo)入數(shù)據(jù)庫時(shí)需與數(shù)據(jù)庫編碼一致)。若出現(xiàn)中文亂碼,優(yōu)先嘗試
UTF-8編碼; - 數(shù)據(jù)格式保留:轉(zhuǎn)換為 CSV 后,會(huì)以 Excel 中“顯示值”保存(如 “12.34%” 會(huì)轉(zhuǎn)為 “12.34%”,而非原始數(shù)值0.1234);
- 空值與空白行:Spire.XLS 會(huì)保留 Excel 中的空單元格(CSV 中以 “,” 分隔空值),但會(huì)自動(dòng)過濾工作表末尾的空白行(無數(shù)據(jù)的行);
Spire.XLS for Java 為 Excel 到 CSV 的轉(zhuǎn)換提供了簡潔、高效的解決方案,開發(fā)者無需關(guān)注 Excel 底層解析細(xì)節(jié),僅通過少量 API 即可完成轉(zhuǎn)換需求。在實(shí)際使用中,需注意編碼匹配、數(shù)據(jù)格式保留等問題。
到此這篇關(guān)于使用Java實(shí)現(xiàn)將Excel工作表轉(zhuǎn)換為CSV格式的文章就介紹到這了,更多相關(guān)Java Excel工作表轉(zhuǎn)CSV內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Java將Excel轉(zhuǎn)換為Text的實(shí)現(xiàn)方法
- Java將Word、Excel、PDF和PPT轉(zhuǎn)換為OFD格式的詳細(xì)步驟
- 基于Java實(shí)將現(xiàn)Excel轉(zhuǎn)換為HTML
- Java實(shí)現(xiàn)集合和Excel文件相互轉(zhuǎn)換
- Java高效實(shí)現(xiàn)excel轉(zhuǎn)pdf(支持帶圖片的轉(zhuǎn)換)
- java實(shí)現(xiàn)Excel轉(zhuǎn)換為圖片
- Java實(shí)現(xiàn)快速將HTML表格轉(zhuǎn)換成Excel
- Java中實(shí)現(xiàn)Excel數(shù)字與文本轉(zhuǎn)換的示例代碼
相關(guān)文章
Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法與應(yīng)用示例
這篇文章主要介紹了Java動(dòng)態(tài)數(shù)組添加數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java動(dòng)態(tài)數(shù)組的創(chuàng)建、添加、查找、打印等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
MyBatis+Calcite實(shí)現(xiàn)多數(shù)據(jù)庫SQL自動(dòng)適配的詳細(xì)指南
在當(dāng)今企業(yè)IT環(huán)境中,數(shù)據(jù)庫異構(gòu)性已成為常態(tài),根據(jù)DB-Engines最新調(diào)研,超過78%的企業(yè)同時(shí)使用兩種以上數(shù)據(jù)庫系統(tǒng),所以本文就來為大家介紹一下如何基于MyBatis+Calcite實(shí)現(xiàn)多數(shù)據(jù)庫SQL自動(dòng)適配吧2025-04-04
java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí)
java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí),1000次插入方法的比較。2013-04-04
Java導(dǎo)出Excel通用工具類實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
springboot中通過jwt令牌校驗(yàn)及前端token請(qǐng)求頭進(jìn)行登錄攔截實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于springboot中如何通過jwt令牌校驗(yàn)及前端token請(qǐng)求頭進(jìn)行登錄攔截的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java圖像之自定義角度旋轉(zhuǎn)(實(shí)例)
這篇文章主要介紹了Java圖像之自定義角度旋轉(zhuǎn)(實(shí)例),需要的朋友可以參考下2017-09-09
Spring學(xué)習(xí)JdbcTemplate數(shù)據(jù)庫事務(wù)參數(shù)
這篇文章主要為大家介紹了Spring學(xué)習(xí)JdbcTemplate數(shù)據(jù)庫事務(wù)參數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

