将 CSV 文件转换为 Excel 是 Java 开发者在进行数据报表、分析流程或文件转换时常见的操作。虽然可以手动解析 CSV 文件,但这种方式不仅代码繁琐,而且格式控制能力有限。借助如 Spire.XLS for Java 这样的专业 Excel 库,可以极大简化处理流程,同时实现对布局、样式、模板以及数据整合的全面控制。
E-iceblue旗下Spire系列产品,是文档处理领域的佼佼者,支持国产化信创。本文将带你逐步了解多种使用场景,介绍如何借助 Spire.XLS for Java 使用 Java 将 CSV 转换为 Excel,包括基本的导入导出、样式设置、注入模板数据、以及将多个 CSV 文件合并为一个 Excel 工作簿等内容。
Spire.XLS for Java免费试用下载,请联系Spire官方授权代理商慧都科技
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
在 Java 项目中配置 Spire.XLS
在进行 CSV 到 Excel 的转换前,需要将 Spire.XLS for Java 引入到项目中。该库支持 .xls 与 .xlsx 文件格式,并提供简洁的 API,无需安装 Microsoft Office 即可创建和操作 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>
- spire.xls</artifactId>
- <version>15.7.7</version>
- </dependency>
- </dependencies>
复制代码 手动引入 JAR 包
你也可以下载 Spire.XLS for Java,并手动将 JAR 文件添加到项目的类路径中。
Spire.XLS for Java免费试用下载,请联系Spire官方授权代理商慧都科技
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
使用 Java 将 CSV 文件转换为 Excel
最基本的使用场景是将一个 .csv 文件转换为 .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 格式,只需将版本参数改为 ExcelVersion.Version97to2003。
以下是转换结果示意图:
此外,你还可以自定义分隔符,或设置起始的行和列位置,非常适合已有标题或固定布局的场景:- workbook.loadFromFile("data_semicolon.csv", ";", 3, 2);
复制代码 使用 Java 设置 Excel 输出格式
在生成用于报表或客户展示的 Excel 文件时,设置样式能显著提升可读性与专业感。Spire.XLS 支持通过 CellStyle 类自定义字体、颜色、数字格式等,并支持自动调整列宽。
示例:设置样式并自动调整列宽
[code]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); // 设置表头样式 CellStyle headerStyle = workbook.getStyles().addStyle("Header"); headerStyle.getFont().isBold(true); headerStyle.getFont().setSize(14f); headerStyle.setKnownColor(ExcelColors.LightYellow); for (int col = 1; col 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 |