Java高效实现CSV转Excel的三种方法详解

 更新时间:2026年02月07日 08:21:41   作者:用户372157426135  
​在日常开发工作中,CSV 文件作为一种简单、轻便的数据存储格式,常被用于数据交换和存储,本篇文章将分享几种基于 Java 的 CSV 转 Excel 方法,希望对大家有所帮助

​在日常开发工作中,CSV 文件作为一种简单、轻便的数据存储格式,常被用于数据交换和存储。但当需要对数据进行分析、生成报表,或者将数据分享给其他人时,Excel 格式往往更具优势。它不仅易于操作,还支持更多的格式化选项,适合做进一步的数据处理和展示。

本篇文章将分享几种基于 Java 的 CSV 转 Excel 方法,帮助你在开发中更高效地实现这种常见的数据转换操作。

安装依赖

在开始编写代码之前,你需要引入相关的 Java 库。我们将使用一个常见的 Spire.XLS 库来实现 CSV 转 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>

添加这个依赖后,你就可以开始使用相应的 API 来操作 Excel 文件了。

示例一:简单的 CSV 转 Excel

对于许多场景,简单地将 CSV 文件转换成 Excel 就能满足需求。这里,我们展示了一个基础的实现方法,只需几行代码就能完成任务。

import com.spire.xls.*;

public class CsvToXlsx {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("数据.csv", ",");  // 加载CSV文件
        workbook.saveToFile("输出.xlsx", ExcelVersion.Version2013);  // 保存为Excel文件
    }
}

代码解析

  • workbook.loadFromFile("数据.csv", ",");:加载 CSV 文件,指定逗号为分隔符。
  • workbook.saveToFile("输出.xlsx", ExcelVersion.Version2013);:将数据保存为 Excel 格式。

这种方法适用于那些只需要快速转换文件格式的场景,不涉及复杂的格式化需求。

示例二:格式化 Excel 文件

如果你希望在转换过程中对 Excel 文件进行格式化操作,比如设置表头样式或调整列宽等,以下示例可以提供一个更完整的解决方案。

import com.spire.xls.*;

public class CsvToXlsx {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("数据.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);  // 设置表头样式
        }

        // 格式化数字列
        CellStyle numStyle = workbook.getStyles().addStyle("Numbers");
        numStyle.setNumberFormat("#,##0.00");
        sheet.getCellRange("B2:B100").setStyle(numStyle);  // 设置数字格式

        // 自动调整列宽
        for (int i = 1; i <= sheet.getLastRow(); i++) {
            sheet.autoFitColumn(i);  // 自动调整列宽
        }

        workbook.saveToFile("格式化输出.xlsx", ExcelVersion.Version2013);  // 保存为Excel文件
    }
}

代码解析

  • 格式化表头 :通过设置表头的字体加粗并改变背景色,使其更加突出。
  • 数字列格式化 :为数字列指定了特定的格式,例如带千分位和两位小数。
  • 自动调整列宽 :自动调整列宽,使得数据在 Excel 中能够合理显示,不会出现列过窄的情况。

这种方法适合需要进一步美化数据和确保数据展示效果的场景。

示例三:批量处理多个 CSV 文件

有时候,我们需要将多个 CSV 文件合并为一个 Excel 文件。这种需求在处理大量数据时尤其常见。以下示例展示了如何批量处理多个 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"));
        // 创建一个新的工作簿,并清空所有工作表
        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 文件的内容作为新的工作表添加到同一个工作簿中。
  • 保存合并结果 :最终,将所有 CSV 文件合并后的 Excel 文件保存为一个新的文件。

这种方法非常适合需要处理多个 CSV 文件并将它们合并为一个 Excel 文件的场景。

总结

通过以上几个示例,我们展示了如何在 Java 中高效地将 CSV 文件转换为 Excel 文件。从简单的转换到格式化操作,再到批量处理多个文件,所有这些操作都可以轻松完成。根据不同的需求,你可以选择最适合的实现方式。

到此这篇关于Java高效实现CSV转Excel的三种方法详解的文章就介绍到这了,更多相关Java CSV转Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中实现Comparable和Comparator对象比较

    Java中实现Comparable和Comparator对象比较

    这篇文章主要针对Java中Comparable和Comparator对象进行比较,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • java并发编程_线程池的使用方法(详解)

    java并发编程_线程池的使用方法(详解)

    下面小编就为大家带来一篇java并发编程_线程池的使用方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • SpringBoot手写RestTemplate拦截器链,掌控HTTP请求实践

    SpringBoot手写RestTemplate拦截器链,掌控HTTP请求实践

    本文介绍了在Spring项目中使用RestTemplate时遇到的问题及解决方案,通过自定义拦截器链来实现请求的统一处理,包括添加认证Token、记录请求日志、设置超时时间、实现失败重试等,关键点在于拦截器链的顺序和响应流的处理,以及确保拦截器的线程安全
    2025-12-12
  • SpringBoot中的@Conditional 注解的使用

    SpringBoot中的@Conditional 注解的使用

    @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件的才给容器注册Bean,本文主要介绍了SpringBoot中的@Conditional 注解的使用
    2024-01-01
  • SpringBoot实现TCP连接并进行数据互传的方法

    SpringBoot实现TCP连接并进行数据互传的方法

    本文详细介绍了微服务架构中的翻译组件使用场景,以及多种开源翻译组件的解决方案,文中分析了国内外多个翻译服务如百度翻译、谷歌翻译等,以及如何在微服务项目中集成这些翻译组件,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • 浅谈DetachedCriteria和Criteria的使用方法(必看)

    浅谈DetachedCriteria和Criteria的使用方法(必看)

    下面小编就为大家带来一篇浅谈DetachedCriteria和Criteria的使用方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • maven的多仓库配置的实现步骤

    maven的多仓库配置的实现步骤

    本文主要介绍了如何配置Maven的settings.xml文件中的镜像和仓库设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • Java8 Instant 时间戳实例讲解

    Java8 Instant 时间戳实例讲解

    Instant类是Java8 中补充的一个 时间戳类,nstant 可以使用静态方法 now()或者of()方法来创建一个实例对象,本文通过实例代码讲解Java8 Instant 时间戳,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • SpringBoot之为何推荐使用构造器注入

    SpringBoot之为何推荐使用构造器注入

    这篇文章主要介绍了SpringBoot之为何推荐使用构造器注入问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • SpringBoot中如何启动Tomcat流程

    SpringBoot中如何启动Tomcat流程

    这篇文章主要介绍了SpringBoot中如何启动Tomcat流程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05

最新评论