国产化Excel处理组件Spire.XLS教程:使用 Java 将 CSV 转换为 Excel

翻译|使用教程|编辑:吉炜炜|2025-07-29 11:59:04.027|阅读 14 次

概述:将 CSV 文件转换为 Excel 是 Java 开发者在进行数据报表、分析流程或文件转换时常见的操作。虽然可以手动解析 CSV 文件,但这种方式不仅代码繁琐,而且格式控制能力有限。借助如 Spire.XLS for Java 这样的专业 Excel 库,可以极大简化处理流程,同时实现对布局、样式、模板以及数据整合的全面控制。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

将 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技术交流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>
        <artifactId>spire.xls</artifactId>
        <version>15.7.7</version>
    </dependency>
</dependencies>

手动引入 JAR 包

你也可以下载 Spire.XLS for Java,并手动将 JAR 文件添加到项目的类路径中。

使用 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 类自定义字体、颜色、数字格式等,并支持自动调整列宽。

示例:设置样式并自动调整列宽

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);
    }
}
以下是带有格式的 Excel 输出示例:

如果你想将数据导入到预设的 Excel 模板中,只需加载现有 .xlsx 文件,并使用如 insertArray() 插入数组。请注意,模板格式不会自动应用,仍需手动设置样式。

将多个 CSV 文件合并为一个 Excel 文件

当处理批量数据或多个来源的数据时,通常需要将多个 CSV 文件合并为一个 Excel 文件。Spire.XLS 支持以下两种方式:

  • 每个 CSV 文件导入到独立的工作表;
  • 所有 CSV 数据整合到同一个工作表中。

方式一:每个 CSV 单独作为工作表

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);
    }
}
下图展示了多个工作表组成的 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);
    }
}

以下是合并结果的截图:


故障排查建议

错误及解决方法:

  • Excel 内容乱码?

请确保 CSV 文件采用 UTF-8 编码。

  • 列错位或对齐不正确?

检查使用的分隔符是否一致。

  • CSV 文件过大?

考虑将其拆分为多个工作表,提高处理效率。

  • 合并的文件结构不同?

先统一字段结构或列标题,再执行合并操作。

常见问题解答

如何在 Java 中将 CSV 文件转换为 XLSX 格式?

使用 Workbook.loadFromFile("file.csv", ",") 加载 CSV 文件,然后使用 saveToFile("output.xlsx", ExcelVersion.Version2016) 保存为 .xlsx 文件。

可以设置 Excel 输出的样式吗?

可以。通过 CellStyle 类可设置字体、颜色、对齐方式、数字格式等。

可以将 CSV 数据插入到 Excel 模板中吗?

完全可以。加载 .xlsx 模板文件后,通过 setText() 或 insertDataTable() 方法注入数据。

如何将多个 CSV 文件合并为一个 Excel 文件?

可以选择每个 CSV 为一个工作表,或将它们逐行追加合并到一个工作表中。

————————————————————————————————————————

关于慧都科技:

慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化,帮助企业高效构建文档处理的应用程序。

欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询慧都在线客服  ;技术交流Q群(125237868


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP