正不正经不知道 發表於 2025-7-29 14:16:00

国产化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>&nbsp;是 Java 开发者在进行数据报表、分析流程或文件转换时常见的操作。虽然可以手动解析 CSV 文件,但这种方式不仅代码繁琐,而且格式控制能力有限。借助如&nbsp;<strong><u>Spire.XLS for Java&nbsp;</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>&nbsp;Spire.XLS for Java&nbsp;</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 的转换前,需要将&nbsp;<strong><u>Spire.XLS for Java</u></strong>&nbsp;引入到项目中。该库支持&nbsp;.xls&nbsp;与&nbsp;.xlsx&nbsp;文件格式,并提供简洁的 API,无需安装 Microsoft Office 即可创建和操作 Excel 文档。</p>
<p><strong>通过 Maven 引入</strong></p>
<pre class="prettyprint lang-js highlighter-hljs"><code>&lt;repositories&gt;
    &lt;repository&gt;
      &lt;id&gt;com.e-iceblue&lt;/id&gt;
      &lt;name&gt;e-iceblue&lt;/name&gt;
      &lt;url&gt;https://repo.e-iceblue.cn/repository/maven-public/&lt;/url&gt;
    &lt;/repository&gt;
&lt;/repositories&gt;
&lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;e-iceblue&lt;/groupId&gt;
      &lt;artifactId&gt;spire.xls&lt;/artifactId&gt;
      &lt;version&gt;15.7.7&lt;/version&gt;
    &lt;/dependency&gt;
&lt;/dependencies&gt;</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>最基本的使用场景是将一个&nbsp;.csv&nbsp;文件转换为&nbsp;.xlsx&nbsp;或&nbsp;.xls&nbsp;格式。使用<strong><u>&nbsp;Spire.XLS</u></strong>,只需两步即可完成:使用&nbsp;loadFromFile()&nbsp;加载 CSV,使用&nbsp;saveToFile()&nbsp;保存为 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>若要输出为&nbsp;.xls&nbsp;格式,只需将版本参数改为&nbsp;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>&nbsp;支持通过&nbsp;CellStyle&nbsp;类自定义字体、颜色、数字格式等,并支持自动调整列宽。</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 &lt;= 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 &lt;= 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 模板中,只需加载现有&nbsp;.xlsx&nbsp;文件,并使用如&nbsp;insertArray()&nbsp;插入数组。请注意,模板格式不会自动应用,仍需手动设置样式。</p>
<h2>将多个 CSV 文件合并为一个 Excel 文件</h2>
<p>当处理批量数据或多个来源的数据时,通常需要将多个 CSV 文件合并为一个 Excel 文件。<strong><u>Spire.XLS</u></strong>&nbsp;支持以下两种方式:</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) -&gt; 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>&nbsp;</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) -&gt; 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 &lt;= tempSheet.getLastRow(); r++) {
                for (int c = 1; c &lt;= 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>使用&nbsp;Workbook.loadFromFile("file.csv", ",")&nbsp;加载 CSV 文件,然后使用&nbsp;saveToFile("output.xlsx", ExcelVersion.Version2016)&nbsp;保存为&nbsp;.xlsx&nbsp;文件。</p>
<h3>可以设置 Excel 输出的样式吗?</h3>
<p>可以。通过&nbsp;CellStyle&nbsp;类可设置字体、颜色、对齐方式、数字格式等。</p>
<h3>可以将 CSV 数据插入到 Excel 模板中吗?</h3>
<p>完全可以。加载&nbsp;.xlsx&nbsp;模板文件后,通过&nbsp;setText()&nbsp;或&nbsp;insertDataTable()&nbsp;方法注入数据。</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]
查看完整版本: 国产化Excel处理组件Spire.XLS教程:使用 Java 将 CSV 转换为 Excel