Java高效實現(xiàn)CSV轉(zhuǎn)Excel的三種方法詳解
?在日常開發(fā)工作中,CSV 文件作為一種簡單、輕便的數(shù)據(jù)存儲格式,常被用于數(shù)據(jù)交換和存儲。但當需要對數(shù)據(jù)進行分析、生成報表,或者將數(shù)據(jù)分享給其他人時,Excel 格式往往更具優(yōu)勢。它不僅易于操作,還支持更多的格式化選項,適合做進一步的數(shù)據(jù)處理和展示。
本篇文章將分享幾種基于 Java 的 CSV 轉(zhuǎn) Excel 方法,幫助你在開發(fā)中更高效地實現(xiàn)這種常見的數(shù)據(jù)轉(zhuǎn)換操作。
安裝依賴
在開始編寫代碼之前,你需要引入相關(guān)的 Java 庫。我們將使用一個常見的 Spire.XLS 庫來實現(xiàn) CSV 轉(zhuǎn) Excel 操作。以下是 Maven 配置示例:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.10.5</version>
</dependency>
</dependencies>
添加這個依賴后,你就可以開始使用相應(yīng)的 API 來操作 Excel 文件了。
示例一:簡單的 CSV 轉(zhuǎn) Excel
對于許多場景,簡單地將 CSV 文件轉(zhuǎn)換成 Excel 就能滿足需求。這里,我們展示了一個基礎(chǔ)的實現(xiàn)方法,只需幾行代碼就能完成任務(wù)。
import com.spire.xls.*;
public class CsvToXlsx {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("數(shù)據(jù).csv", ","); // 加載CSV文件
workbook.saveToFile("輸出.xlsx", ExcelVersion.Version2013); // 保存為Excel文件
}
}
代碼解析
workbook.loadFromFile("數(shù)據(jù).csv", ",");:加載 CSV 文件,指定逗號為分隔符。workbook.saveToFile("輸出.xlsx", ExcelVersion.Version2013);:將數(shù)據(jù)保存為 Excel 格式。
這種方法適用于那些只需要快速轉(zhuǎn)換文件格式的場景,不涉及復(fù)雜的格式化需求。
示例二:格式化 Excel 文件
如果你希望在轉(zhuǎn)換過程中對 Excel 文件進行格式化操作,比如設(shè)置表頭樣式或調(diào)整列寬等,以下示例可以提供一個更完整的解決方案。
import com.spire.xls.*;
public class CsvToXlsx {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("數(shù)據(jù).csv", ","); // 加載CSV文件
Worksheet sheet = workbook.getWorksheets().get(0);
// 格式化表頭
CellStyle headerStyle = workbook.getStyles().addStyle("Header");
headerStyle.getFont().isBold(true);
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); // 設(shè)置數(shù)字格式
// 自動調(diào)整列寬
for (int i = 1; i <= sheet.getLastRow(); i++) {
sheet.autoFitColumn(i); // 自動調(diào)整列寬
}
workbook.saveToFile("格式化輸出.xlsx", ExcelVersion.Version2013); // 保存為Excel文件
}
}
代碼解析
- 格式化表頭 :通過設(shè)置表頭的字體加粗并改變背景色,使其更加突出。
- 數(shù)字列格式化 :為數(shù)字列指定了特定的格式,例如帶千分位和兩位小數(shù)。
- 自動調(diào)整列寬 :自動調(diào)整列寬,使得數(shù)據(jù)在 Excel 中能夠合理顯示,不會出現(xiàn)列過窄的情況。
這種方法適合需要進一步美化數(shù)據(jù)和確保數(shù)據(jù)展示效果的場景。
示例三:批量處理多個 CSV 文件
有時候,我們需要將多個 CSV 文件合并為一個 Excel 文件。這種需求在處理大量數(shù)據(jù)時尤其常見。以下示例展示了如何批量處理多個 CSV 文件,并將它們合并到一個 Excel 文件中。
import com.spire.xls.*;
import java.io.File;
public class CsvToXlsx {
public static void main(String[] args) {
// 獲取 CSV 文件夾中的所有文件
File[] csvFiles = new File("CSVs/").listFiles((dir, name) -> name.endsWith(".csv"));
// 創(chuàng)建一個新的工作簿,并清空所有工作表
Workbook workbook = new Workbook();
workbook.getWorksheets().clear();
for (File csv : csvFiles) {
// 加載 CSV 文件
Workbook temp = new Workbook();
temp.loadFromFile(csv.getAbsolutePath(), ",");
// 將 CSV 文件添加到工作簿的一個工作表中
workbook.getWorksheets().addCopy(temp.getWorksheets().get(0));
}
// 保存合并后的 Excel 文件
workbook.saveToFile("合并輸出.xlsx", ExcelVersion.Version2016);
}
}
代碼解析
- 批量處理 CSV 文件 :通過獲取指定文件夾下所有 CSV 文件,并逐個加載它們。
- 合并工作表 :將每個 CSV 文件的內(nèi)容作為新的工作表添加到同一個工作簿中。
- 保存合并結(jié)果 :最終,將所有 CSV 文件合并后的 Excel 文件保存為一個新的文件。
這種方法非常適合需要處理多個 CSV 文件并將它們合并為一個 Excel 文件的場景。
總結(jié)
通過以上幾個示例,我們展示了如何在 Java 中高效地將 CSV 文件轉(zhuǎn)換為 Excel 文件。從簡單的轉(zhuǎn)換到格式化操作,再到批量處理多個文件,所有這些操作都可以輕松完成。根據(jù)不同的需求,你可以選擇最適合的實現(xiàn)方式。
到此這篇關(guān)于Java高效實現(xiàn)CSV轉(zhuǎn)Excel的三種方法詳解的文章就介紹到這了,更多相關(guān)Java CSV轉(zhuǎn)Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java使用Spire.XLS?for?Java實現(xiàn)Excel與CSV的相互轉(zhuǎn)換
- 使用Java將CSV文件轉(zhuǎn)換為格式化的Excel文件
- 使用Java實現(xiàn)將Excel工作表轉(zhuǎn)換為CSV格式
- Java輕松實現(xiàn)Excel與CSV格式互轉(zhuǎn)(含批量轉(zhuǎn)換)
- 使用Java高效將CSV轉(zhuǎn)換為Excel的實現(xiàn)方法
- 利用Java提取PDF表格到文本、CSV及excel工作表
- 利用反射實現(xiàn)Excel和CSV 轉(zhuǎn)換為Java對象功能
- Java實現(xiàn)將CSV轉(zhuǎn)為Excel的示例代碼
相關(guān)文章
Spring?Boot與Spring?MVC?Spring對比及核心概念
這篇文章主要為大家介紹了Spring?Boot與Spring?MVC?Spring的對比以及你需要了解的核心概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
MyBatis-plus處理存儲json數(shù)據(jù)過程
文章介紹MyBatis-Plus 3.4.21處理對象與集合的差異:對象可用內(nèi)置Handler配合autoResultMap,集合需自定義處理器繼承FastjsonTypeHandler并重寫parse方法,同時需明確指定類類型及XML中的resultMap以解決轉(zhuǎn)換問題2025-08-08
Java數(shù)據(jù)結(jié)構(gòu)之選擇排序算法的實現(xiàn)與優(yōu)化
選擇排序:(Selection?sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。本文主要為大家介紹一下選擇排序的實現(xiàn)與優(yōu)化,希望對大家有所幫助2023-01-01
如何用Java?幾分鐘處理完?30?億個數(shù)據(jù)(項目難題)
現(xiàn)有一個 10G 文件的數(shù)據(jù),里面包含了 18-70 之間的整數(shù),分別表示 18-70 歲的人群數(shù)量統(tǒng)計,今天小編通過本文給大家講解如何用Java?幾分鐘處理完?30?億個數(shù)據(jù),這個問題一直以來是項目難題,今天通過本文給大家詳細介紹下,感興趣的朋友一起看看吧2022-07-07
SpringBoot開發(fā)實戰(zhàn)系列之動態(tài)定時任務(wù)
在我們?nèi)粘5拈_發(fā)中,很多時候,定時任務(wù)都不是寫死的,而是寫到數(shù)據(jù)庫中,從而實現(xiàn)定時任務(wù)的動態(tài)配置,下面這篇文章主要給大家介紹了關(guān)于SpringBoot開發(fā)實戰(zhàn)系列之動態(tài)定時任務(wù)的相關(guān)資料,需要的朋友可以參考下2021-08-08

