使用Java实现将Excel工作表转换为CSV格式

 更新时间:2025年10月30日 08:29:05   作者:Eiceblue  
在日常开发中,Excel 文件(.xls/.xlsx)是数据存储和交换的常用格式,本文将介绍如何使用 Spire.XLS for Java 组件,高效实现 Excel 文件到 CSV 格式的转换,需要的可以了解下

在日常开发中,Excel 文件(.xls/.xlsx)是数据存储和交换的常用格式,但在数据导入、批量处理等场景下,轻量且纯文本的 CSV 格式更具优势。本文将介绍如何使用 Spire.XLS for Java 组件,高效实现 Excel 文件到 CSV 格式的转换,涵盖环境准备、核心步骤、完整代码及关键说明,帮助开发者快速落地相关需求。

引入依赖(Maven方式)

在项目的pom.xml文件中添加Spire.XLS的依赖配置(查询最新版本):

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls</artifactId>
    <version>15.10.5</version>
</dependency>

Spire.XLS for Java兼容Excel 97-2021的所有版本格式。其API设计简洁,封装了复杂的Excel底层逻辑,代码简单易懂。

Excel 转 CSV 核心实现步骤

Excel转CSV的核心逻辑是:加载Excel文件 → 定位目标工作表 → 调用转换API保存为CSV格式。以下分 “单工作表转换” 和 “多工作表批量转换” 两种场景展开。

场景1:单个工作表转换为CSV

适用于仅需提取Excel中某一个工作表(如第一个工作表)数据的场景,代码如下:

import com.spire.xls.*;
import java.nio.charset.Charset;

public class ExcelToCsvSingleSheet {
    public static void main(String[] args) {
        // 创建Workbook对象,加载Excel文件
        Workbook workbook = new Workbook();
        workbook.loadFromFile("E:\\PythonExcel\\产品.xlsx");

        // 获取目标工作表(索引从0开始,0表示第一个工作表)
        Worksheet worksheet = workbook.getWorksheets().get(0);
        // (可选)若已知工作表名称,可通过名称获取:workbook.getWorksheets().get("Sheet1")

        // 将工作表保存为CSV格式,指定输出路径、分隔符和编码(UTF-8避免中文乱码)
        worksheet.saveToFile("single_sheet.csv", ",", Charset.forName("UTF-8"));

        // 释放资源
        workbook.dispose();
    }
}

代码说明

  • 加载Excel文件Workbook是Spire.XLS的核心类,负责Excel文件的整体管理,loadFromFile()方法支持加载.xls和.xlsx格式;
  • 获取工作表:通过索引(get(0))或名称(get("Sheet1"))定位工作表,需确保索引不越界(若Excel只有1个工作表,索引最大为0);
  • 保存为CSVsaveToFile()的第三个参数指定编码(推荐UTF-8,避免中文乱码),若不指定编码,默认使用系统编码(可能导致乱码)。

CSV 输出文件:

场景2:多工作表批量转换为CSV

若Excel文件包含多个工作表,需将每个工作表单独转为CSV(如Sheet1.csvSheet2.csv),可通过遍历工作表实现批量转换:

import com.spire.xls.*;
import java.nio.charset.Charset;

public class ExcelToCsvMultiSheets {
    public static void main(String[] args) {
        // 加载Excel文件
        Workbook workbook = new Workbook();
        workbook.loadFromFile("E:\\PythonExcel\\数据表.xlsx");

        // 遍历所有工作表
        for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
            Worksheet worksheet = workbook.getWorksheets().get(i);
            // 获取工作表名称,作为CSV文件名的一部分
            String sheetName = worksheet.getName();
            // 定义CSV输出路径
            String csvOutputPath = "Output/" + sheetName + ".csv";
            // 保存为CSV
            worksheet.saveToFile(csvOutputPath,",", Charset.forName("UTF-8"));
        }

        // 释放资源
        workbook.dispose();
    }
}

自定义CSV分隔符:部分场景需用分号(;)或制表符(\t)作为 CSV 分隔符,可通过saveToFile()的第二个参数指定

关键注意事项

  • 编码问题:CSV 文件的编码需与后续使用场景匹配(如导入数据库时需与数据库编码一致)。若出现中文乱码,优先尝试UTF-8编码;
  • 数据格式保留:转换为 CSV 后,会以 Excel 中“显示值”保存(如 “12.34%” 会转为 “12.34%”,而非原始数值0.1234);
  • 空值与空白行:Spire.XLS 会保留 Excel 中的空单元格(CSV 中以 “,” 分隔空值),但会自动过滤工作表末尾的空白行(无数据的行);

Spire.XLS for Java 为 Excel 到 CSV 的转换提供了简洁、高效的解决方案,开发者无需关注 Excel 底层解析细节,仅通过少量 API 即可完成转换需求。在实际使用中,需注意编码匹配、数据格式保留等问题。

到此这篇关于使用Java实现将Excel工作表转换为CSV格式的文章就介绍到这了,更多相关Java Excel工作表转CSV内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java获取注册ip实例

    java获取注册ip实例

    本文分享了java获取注册ip实例代码,代码简洁,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • Java实现微信支付的签名算法示例

    Java实现微信支付的签名算法示例

    这篇文章主要为大家介绍了Java实现微信支付的签名算法实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • SpringBoot使用Kafka来优化接口请求的并发方式

    SpringBoot使用Kafka来优化接口请求的并发方式

    这篇文章主要介绍了SpringBoot使用Kafka来优化接口请求的并发方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解Java中实现SHA1与MD5加密算法的基本方法

    详解Java中实现SHA1与MD5加密算法的基本方法

    这篇文章主要介绍了详解Java中实现SHA1与MD5加密算法的基本方法,安全哈希算法第一版和消息摘要算法第五版也是通常人们最常用的加密算法,需要的朋友可以参考下
    2016-04-04
  • java 判断一个数组中的数值是否连续相邻的方法

    java 判断一个数组中的数值是否连续相邻的方法

    下面小编就为大家分享一篇java 判断一个数组中的数值是否连续相邻的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Java实现排列组合算法的两种方案

    Java实现排列组合算法的两种方案

    Java排列组合算法是一种用于生成所有可能的排列和组合的算法,在Java中,可以使用递归或迭代的方式实现排列组合算法,本文给大家介绍了Java实现排列组合算法的两种方案,需要的朋友可以参考下
    2024-04-04
  • 基于Jmeter生成测试报告过程图解

    基于Jmeter生成测试报告过程图解

    这篇文章主要介绍了基于Jmeter生成测试报告过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • MyBatis中PageHelper不生效的解决方案

    MyBatis中PageHelper不生效的解决方案

    这篇文章主要介绍了MyBatis中PageHelper不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java实现拼图游戏

    java实现拼图游戏

    这篇文章主要为大家详细介绍了java实现拼图游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Java多线程编程中使用Condition类操作锁的方法详解

    Java多线程编程中使用Condition类操作锁的方法详解

    Condition是java.util.concurrent.locks包下的类,提供了对线程锁的更精细的控制方法,下面我们就来看一下Java多线程编程中使用Condition类操作锁的方法详解
    2016-07-07

最新评论