国产化Excel处理组件Spire.XLS教程:使用 Java 将 CSV 转换为 Excel
<p><img src="https://image.evget.com/attachment/keditor/image/20250729/115318_3.png"></p><p><strong>将 CSV 文件转换为 Excel</strong> 是 Java 开发者在进行数据报表、分析流程或文件转换时常见的操作。虽然可以手动解析 CSV 文件,但这种方式不仅代码繁琐,而且格式控制能力有限。借助如 <strong><u>Spire.XLS for Java </u></strong>这样的专业 Excel 库,可以极大简化处理流程,同时实现对布局、样式、模板以及数据整合的全面控制。</p>
<p><em><strong>E</strong></em><em><strong>-iceblue</strong>旗下<strong>S</strong><strong>pire</strong><strong>系列产品</strong>,是文档处理领域的佼佼者,<strong>支持国产化信创</strong>。</em>本文将带你逐步了解多种使用场景,介绍如何借助<strong><u> Spire.XLS for Java </u></strong><strong>使用 Java 将 CSV 转换为 Excel</strong>,包括基本的导入导出、样式设置、注入模板数据、以及将多个 CSV 文件合并为一个 Excel 工作簿等内容。</p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">Spire.XLS for Java免费试用下载,请联系Spire官方授权代理商</span>慧都科技</strong></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<h2>在 Java 项目中配置 Spire.XLS</h2>
<p>在进行 CSV 到 Excel 的转换前,需要将 <strong><u>Spire.XLS for Java</u></strong> 引入到项目中。该库支持 .xls 与 .xlsx 文件格式,并提供简洁的 API,无需安装 Microsoft Office 即可创建和操作 Excel 文档。</p>
<p><strong>通过 Maven 引入</strong></p>
<pre class="prettyprint lang-js highlighter-hljs"><code><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.7.7</version>
</dependency>
</dependencies></code></pre>
<p><strong>手动引入 JAR 包</strong></p>
<p>你也可以<strong><u>下载 Spire.XLS for Java</u></strong>,并手动将 JAR 文件添加到项目的类路径中。</p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">Spire.XLS for Java免费试用下载,请联系Spire官方授权代理商</span>慧都科技</strong></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<h2>使用 Java 将 CSV 文件转换为 Excel</h2>
<p>最基本的使用场景是将一个 .csv 文件转换为 .xlsx 或 .xls 格式。使用<strong><u> Spire.XLS</u></strong>,只需两步即可完成:使用 loadFromFile() 加载 CSV,使用 saveToFile() 保存为 Excel 文件。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>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);
}
}</code></pre>
<p>若要输出为 .xls 格式,只需将版本参数改为 ExcelVersion.Version97to2003。</p>
<p>以下是转换结果示意图:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250729/115501_9.png"></p>
<p>此外,你还可以自定义分隔符,或设置起始的行和列位置,非常适合已有标题或固定布局的场景:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>workbook.loadFromFile("data_semicolon.csv", ";", 3, 2);</code></pre>
<h2>使用 Java 设置 Excel 输出格式</h2>
<p>在生成用于报表或客户展示的 Excel 文件时,设置样式能显著提升可读性与专业感。<strong><u>Spire.XLS</u></strong> 支持通过 CellStyle 类自定义字体、颜色、数字格式等,并支持自动调整列宽。</p>
<h3>示例:设置样式并自动调整列宽</h3>
<pre class="prettyprint lang-js highlighter-hljs"><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 <= sheet.getLastColumn(); col++) {
sheet.getCellRange(1, col).setStyle(headerStyle);
}
// 设置数字列样式
CellStyle numStyle = workbook.getStyles().addStyle("Numbers");
numStyle.setNumberFormat("#,##0.00");
sheet.getCellRange("B2:B100").setStyle(numStyle);
// 统一设置字体自动调整列宽
sheet.getRange().getStyle().getFont().setFontName("微软雅黑");
for (int i = 1; i <= sheet.getLastRow(); i++) {
sheet.autoFitColumn(i);
}
workbook.saveToFile("formatted_output.xlsx", ExcelVersion.Version2013);
}
}</code></pre>
<p>以下是带有格式的 Excel 输出示例:<img src="https://image.evget.com/attachment/keditor/image/20250729/115630_2.png"></p>
<p>如果你想将数据导入到预设的 Excel 模板中,只需加载现有 .xlsx 文件,并使用如 insertArray() 插入数组。请注意,模板格式不会自动应用,仍需手动设置样式。</p>
<h2>将多个 CSV 文件合并为一个 Excel 文件</h2>
<p>当处理批量数据或多个来源的数据时,通常需要将多个 CSV 文件合并为一个 Excel 文件。<strong><u>Spire.XLS</u></strong> 支持以下两种方式:</p>
<ul>
<li>每个 CSV 文件导入到独立的工作表;</li>
<li>所有 CSV 数据整合到同一个工作表中。</li>
</ul>
<h3>方式一:每个 CSV 单独作为工作表</h3>
<pre class="prettyprint lang-js highlighter-hljs"><code>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);
}
}</code></pre>
<p>下图展示了多个工作表组成的 Excel 文件:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250729/115728_2.png"></p>
<p> </p>
<h3>方式二:将所有数据合并到同一个工作表中</h3>
<pre class="prettyprint lang-js highlighter-hljs"><code>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);
}
}</code></pre>
<p>以下是合并结果的截图:</p>
<div><img src="https://image.evget.com/attachment/keditor/image/20250729/115830_6.png"></div>
<h2>故障排查建议</h2>
<p><strong>错误及解决方法:</strong></p>
<ul>
<li><strong>Excel 内容乱码?</strong></li>
</ul>
<p>请确保 CSV 文件采用 UTF-8 编码。</p>
<ul>
<li><strong>列错位或对齐不正确?</strong></li>
</ul>
<p>检查使用的分隔符是否一致。</p>
<ul>
<li><strong>CSV 文件过大?</strong></li>
</ul>
<p>考虑将其拆分为多个工作表,提高处理效率。</p>
<ul>
<li><strong>合并的文件结构不同?</strong></li>
</ul>
<p>先统一字段结构或列标题,再执行合并操作。</p>
<h2>常见问题解答</h2>
<h3>如何在 Java 中将 CSV 文件转换为 XLSX 格式?</h3>
<p>使用 Workbook.loadFromFile("file.csv", ",") 加载 CSV 文件,然后使用 saveToFile("output.xlsx", ExcelVersion.Version2016) 保存为 .xlsx 文件。</p>
<h3>可以设置 Excel 输出的样式吗?</h3>
<p>可以。通过 CellStyle 类可设置字体、颜色、对齐方式、数字格式等。</p>
<h3>可以将 CSV 数据插入到 Excel 模板中吗?</h3>
<p>完全可以。加载 .xlsx 模板文件后,通过 setText() 或 insertDataTable() 方法注入数据。</p>
<h3>如何将多个 CSV 文件合并为一个 Excel 文件?</h3>
<p>可以选择每个 CSV 为一个工作表,或将它们逐行追加合并到一个工作表中。</p>
<p style="text-align: center"><strong><span style="color: rgba(230, 126, 35, 1)">Spire.XLS for Java免费试用下载,请联系Spire官方授权代理商</span>慧都科技</strong></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19010711
頁:
[1]