翻譯|使用教程|編輯:吉煒煒|2025-07-29 11:59:04.027|閱讀 89 次
概述:將 CSV 文件轉(zhuǎn)換為 Excel 是 Java 開發(fā)者在進(jìn)行數(shù)據(jù)報(bào)表、分析流程或文件轉(zhuǎn)換時(shí)常見(jiàn)的操作。雖然可以手動(dòng)解析 CSV 文件,但這種方式不僅代碼繁瑣,而且格式控制能力有限。借助如 Spire.XLS for Java 這樣的專業(yè) Excel 庫(kù),可以極大簡(jiǎn)化處理流程,同時(shí)實(shí)現(xiàn)對(duì)布局、樣式、模板以及數(shù)據(jù)整合的全面控制。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
將 CSV 文件轉(zhuǎn)換為 Excel 是 Java 開發(fā)者在進(jìn)行數(shù)據(jù)報(bào)表、分析流程或文件轉(zhuǎn)換時(shí)常見(jiàn)的操作。雖然可以手動(dòng)解析 CSV 文件,但這種方式不僅代碼繁瑣,而且格式控制能力有限。借助如 Spire.XLS for Java 這樣的專業(yè) Excel 庫(kù),可以極大簡(jiǎn)化處理流程,同時(shí)實(shí)現(xiàn)對(duì)布局、樣式、模板以及數(shù)據(jù)整合的全面控制。
E-iceblue旗下Spire系列產(chǎn)品,是文檔處理領(lǐng)域的佼佼者,支持國(guó)產(chǎn)化信創(chuàng)。本文將帶你逐步了解多種使用場(chǎng)景,介紹如何借助 Spire.XLS for Java 使用 Java 將 CSV 轉(zhuǎn)換為 Excel,包括基本的導(dǎo)入導(dǎo)出、樣式設(shè)置、注入模板數(shù)據(jù)、以及將多個(gè) CSV 文件合并為一個(gè) Excel 工作簿等內(nèi)容。
加入Spire技術(shù)交流QQ群(125237868),與更多開發(fā)者一起提升文檔開發(fā)技能。
在進(jìn)行 CSV 到 Excel 的轉(zhuǎn)換前,需要將 Spire.XLS for Java 引入到項(xiàng)目中。該庫(kù)支持 .xls 與 .xlsx 文件格式,并提供簡(jiǎn)潔的 API,無(wú)需安裝 Microsoft Office 即可創(chuàng)建和操作 Excel 文檔。
通過(guò) Maven 引入
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.xls</artifactId> <version>15.7.7</version> </dependency> </dependencies>
手動(dòng)引入 JAR 包
你也可以下載 Spire.XLS for Java,并手動(dòng)將 JAR 文件添加到項(xiàng)目的類路徑中。
最基本的使用場(chǎng)景是將一個(gè) .csv 文件轉(zhuǎn)換為 .xlsx 或 .xls 格式。使用 Spire.XLS,只需兩步即可完成:使用 loadFromFile() 加載 CSV,使用 saveToFile() 保存為 Excel 文件。
import com.spire.xls.*; public class CsvToXlsx { public static void main(String[] args) { Workbook workbook = new Workbook(); workbook.loadFromFile("data.csv", ","); workbook.saveToFile("output.xlsx", ExcelVersion.Version2013); } }
若要輸出為 .xls 格式,只需將版本參數(shù)改為 ExcelVersion.Version97to2003。
以下是轉(zhuǎn)換結(jié)果示意圖:
此外,你還可以自定義分隔符,或設(shè)置起始的行和列位置,非常適合已有標(biāo)題或固定布局的場(chǎng)景:
workbook.loadFromFile("data_semicolon.csv", ";", 3, 2);
在生成用于報(bào)表或客戶展示的 Excel 文件時(shí),設(shè)置樣式能顯著提升可讀性與專業(yè)感。Spire.XLS 支持通過(guò) CellStyle 類自定義字體、顏色、數(shù)字格式等,并支持自動(dòng)調(diào)整列寬。
import com.spire.xls.*; public class CsvToXlsx { public static void main(String[] args) { Workbook workbook = new Workbook(); workbook.loadFromFile("data.csv", ","); Worksheet sheet = workbook.getWorksheets().get(0); // 設(shè)置表頭樣式 CellStyle headerStyle = workbook.getStyles().addStyle("Header"); headerStyle.getFont().isBold(true); headerStyle.getFont().setSize(14f); headerStyle.setKnownColor(ExcelColors.LightYellow); for (int col = 1; col <= sheet.getLastColumn(); col++) { sheet.getCellRange(1, col).setStyle(headerStyle); } // 設(shè)置數(shù)字列樣式 CellStyle numStyle = workbook.getStyles().addStyle("Numbers"); numStyle.setNumberFormat("#,##0.00"); sheet.getCellRange("B2:B100").setStyle(numStyle); // 統(tǒng)一設(shè)置字體自動(dòng)調(diào)整列寬 sheet.getRange().getStyle().getFont().setFontName("微軟雅黑"); for (int i = 1; i <= sheet.getLastRow(); i++) { sheet.autoFitColumn(i); } workbook.saveToFile("formatted_output.xlsx", ExcelVersion.Version2013); } }以下是帶有格式的 Excel 輸出示例:
如果你想將數(shù)據(jù)導(dǎo)入到預(yù)設(shè)的 Excel 模板中,只需加載現(xiàn)有 .xlsx 文件,并使用如 。請(qǐng)注意,模板格式不會(huì)自動(dòng)應(yīng)用,仍需手動(dòng)設(shè)置樣式。
當(dāng)處理批量數(shù)據(jù)或多個(gè)來(lái)源的數(shù)據(jù)時(shí),通常需要將多個(gè) CSV 文件合并為一個(gè) Excel 文件。Spire.XLS 支持以下兩種方式:
import com.spire.xls.*; import java.io.File; public class CsvToXlsx { public static void main(String[] args) { File[] csvFiles = new File("CSVs/").listFiles((dir, name) -> name.endsWith(".csv")); Workbook workbook = new Workbook(); workbook.getWorksheets().clear(); for (File csv : csvFiles) { Workbook temp = new Workbook(); temp.loadFromFile(csv.getAbsolutePath(), ","); workbook.getWorksheets().addCopy(temp.getWorksheets().get(0)); } workbook.saveToFile("merged.xlsx", ExcelVersion.Version2016); } }下圖展示了多個(gè)工作表組成的 Excel 文件:
import com.spire.xls.*; import java.io.File; public class CsvToXlsx { public static void main(String[] args) { File[] csvFiles = new File("CSVs/").listFiles((dir, name) -> name.endsWith(".csv")); Workbook workbook = new Workbook(); workbook.getWorksheets().clear(); Worksheet sheet = workbook.getWorksheets().add("Sample"); int startRow = 1; boolean isFirstFile = true; for (File csv : csvFiles) { Workbook temp = new Workbook(); temp.loadFromFile(csv.getAbsolutePath(), ","); Worksheet tempSheet = temp.getWorksheets().get(0); int startReadRow = isFirstFile ? 1 : 2; isFirstFile = false; for (int r = startReadRow; r <= tempSheet.getLastRow(); r++) { for (int c = 1; c <= tempSheet.getLastColumn(); c++) { sheet.getCellRange(startRow, c).setValue(tempSheet.getCellRange(r, c).getText()); } startRow++; } } workbook.saveToFile("merged_single_sheet.xlsx", ExcelVersion.Version2016); } }
以下是合并結(jié)果的截圖:
錯(cuò)誤及解決方法:
請(qǐng)確保 CSV 文件采用 UTF-8 編碼。
檢查使用的分隔符是否一致。
考慮將其拆分為多個(gè)工作表,提高處理效率。
先統(tǒng)一字段結(jié)構(gòu)或列標(biāo)題,再執(zhí)行合并操作。
使用 Workbook.loadFromFile("file.csv", ",") 加載 CSV 文件,然后使用 saveToFile("output.xlsx", ExcelVersion.Version2016) 保存為 .xlsx 文件。
可以。通過(guò) CellStyle 類可設(shè)置字體、顏色、對(duì)齊方式、數(shù)字格式等。
完全可以。加載 .xlsx 模板文件后,通過(guò) setText() 或 insertDataTable() 方法注入數(shù)據(jù)。
可以選擇每個(gè) CSV 為一個(gè)工作表,或?qū)⑺鼈冎鹦凶芳?合并到一個(gè)工作表中。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長(zhǎng)期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務(wù)理解與管理洞察,以系統(tǒng)化的業(yè)務(wù)建模驅(qū)動(dòng)技術(shù)落地,幫助企業(yè)實(shí)現(xiàn)智能化運(yùn)營(yíng)與長(zhǎng)期競(jìng)爭(zhēng)優(yōu)勢(shì)。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運(yùn)維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購(gòu)、技術(shù)選型、個(gè)性化維保等服務(wù),幫助客戶實(shí)現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險(xiǎn)可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。E-iceblue旗下Spire系列產(chǎn)品是國(guó)產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國(guó)產(chǎn)化,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
歡迎下載|體驗(yàn)更多E-iceblue產(chǎn)品
獲取更多信息請(qǐng)咨詢 ;技術(shù)交流Q群(125237868)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)