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 就能满足需求。这里,我们展示了一个基础的实现方法,只需几行代码就能完成任务。

java 复制代码
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 文件进行格式化操作,比如设置表头样式或调整列宽等,以下示例可以提供一个更完整的解决方案。

java 复制代码
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 文件中。

java 复制代码
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 文件。从简单的转换到格式化操作,再到批量处理多个文件,所有这些操作都可以轻松完成。根据不同的需求,你可以选择最适合的实现方式。

相关推荐
starfire_hit1 小时前
JAVAWEB根据前台请求获取用户IP
java·服务器·网络
fengxin_rou1 小时前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程
像少年啦飞驰点、1 小时前
从零开始学 RabbitMQ:小白也能懂的消息队列实战指南
java·spring boot·微服务·消息队列·rabbitmq·异步编程
宠友信息2 小时前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
java1234_小锋2 小时前
Java高频面试题:Spring和SpringBoot的关系和区别?
java·spring boot·spring
风指引着方向2 小时前
昇腾算子性能调优:ops-nn 中的内存布局与向量化技巧
java·大数据·人工智能
WooaiJava2 小时前
流式TTS音频播放项目 - 面试问答(后端)
java·开发语言
奥升新能源平台2 小时前
奥升充电|充电站用户分层分析与精细化运营策略研究
java·大数据·能源
梵得儿SHI2 小时前
(第十篇)Spring AI 核心技术攻坚全梳理:企业级能力矩阵 + 四大技术栈攻坚 + 性能优化 Checklist + 实战项目预告
java·人工智能·spring·rag·企业级ai应用·springai技术体系·多模态和安全防护