Java实现Excel与TXT文本的高效互转

 更新时间:2025年09月18日 08:16:16   作者:用户372157426135  
在日常开发中,我们经常需要在不同的数据存储格式之间进行转换,本文将分享如何在 Java 中高效实现 Excel 与 TXT 的互转,有需要的小伙伴可以了解下

在日常开发中,我们经常需要在不同的数据存储格式之间进行转换,其中 Excel 和 TXT 是最常见的两种格式。Excel 以表格形式存储数据,支持丰富的格式、公式和多种数据类型,适合报表生成、统计分析等场景。TXT 是纯文本格式,简单轻量,便于跨平台传输、日志存储或数据交换。

在实际项目中,经常需要将 Excel 文件导出为 TXT,或者将 TXT 导入 Excel 进行进一步处理。例如,日志分析系统可能需要将 Excel 报表转换为 TXT 供脚本处理;数据采集系统可能需要将 TXT 文件整理成 Excel 便于可视化和汇总。

本文将分享如何在 Java 中高效实现 Excel 与 TXT 的互转,并提供完整的示例代码和操作说明。

一、准备工作

在开始编写代码之前,需要完成以下准备:

准备示例文件

  • Excel 文件(.xlsx.xls)用于导出 TXT 测试。
  • TXT 文件,每行用固定分隔符(如空格或制表符)分隔,用于导入 Excel 测试。

理解数据结构

Excel 数据按行列组织,每个单元格对应一个字段;TXT 文件每行是一个记录,通过分隔符拆分字段。在互转时,需要保证字段顺序和数量匹配。

库依赖安装

本文使用的库是 Spire.XLS for Java,它可以直接读取、写入和转换 Excel .xls 和 .xlsx等文件,无需依赖 Microsoft Excel,本地或服务器环境都可以使用。

如果使用 Maven,可以在 pom.xml 中添加如下依赖:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls</artifactId>
    <version>13.9.1</version>
</dependency>

二、Excel 转 TXT

Spire.XLS 提供了直接将工作表保存为 TXT 文件的方法,无需手动遍历单元格,同时可以指定列分隔符和字符编码。

示例代码

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

public class ExcelToTxt {
    public static void main(String[] args) {
        // 创建 Workbook 对象,用于操作 Excel 文件
        Workbook workbook = new Workbook();

        // 加载 Excel 文件
        workbook.loadFromFile("sample.xlsx");

        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // 设置字符编码为 UTF-8,确保中文和特殊字符正确显示
        Charset charset = Charset.forName("UTF-8");

        // 将工作表保存为 TXT 文件
        // 第二个参数 " " 表示列之间使用空格分隔,也可以改为 "\t" 或 "," 等
        worksheet.saveToFile("ExcelToTxt.txt", " ", charset);

        // 提示导出完成
        System.out.println("Excel 导出 TXT 完成");
    }
}

代码说明:

  • Worksheet.saveToFile 可直接将工作表导出为文本文件,不需要循环读取单元格。
  • 第二个参数可以设置列间分隔符,比如空格 " " 或制表符 "\t"。
  • 指定 UTF-8 编码可确保中文或特殊字符不会出现乱码。
  • 这种方式适合数据量较大时快速导出。

三、TXT 转 Excel

将 TXT 导入 Excel 时,需要按行读取文本,拆分字段,然后写入对应单元格。

示例代码

import com.spire.xls.*;
import java.io.*;

public class TxtToExcel {
    public static void main(String[] args) {
        // 创建 Workbook 对象,用于写入 Excel
        Workbook workbook = new Workbook();

        // 获取第一个工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 使用 BufferedReader 按行读取 TXT 文件
        try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
            String line;
            int rowIndex = 0; // 当前写入的行号

            // 逐行读取 TXT 文件
            while ((line = reader.readLine()) != null) {
                // 按空格拆分每行的字段
                String[] values = line.split(" ");

                // 将拆分后的字段写入 Excel 单元格
                for (int colIndex = 0; colIndex < values.length; colIndex++) {
                    sheet.getCellRange(rowIndex, colIndex).setText(values[colIndex]);
                }

                // 行号递增,写入下一行
                rowIndex++;
            }

            // 保存 Excel 文件,指定 Excel 版本为 2013
            workbook.saveToFile("output.xlsx", ExcelVersion.Version2013);

            // 提示导入完成
            System.out.println("TXT 导入 Excel 完成");
        } catch (IOException e) {
            // 打印异常信息
            e.printStackTrace();
        }
    }
}

代码说明:

  • 使用 BufferedReader 按行读取,可以处理较大文件而不会一次性占用过多内存。
  • 拆分字段时,分隔符要与生成 TXT 文件时一致,确保数据列正确对应。
  • 使用 setText 写入单元格,操作简单直观。

四、性能与使用建议

在处理 Excel 与 TXT 转换时,可以注意以下几点:

1.缓冲读写

使用 BufferedReaderBufferedWriter 进行文件读写,提高效率。

2.统一分隔符

导出和导入使用相同的分隔符,避免列错位。

3.统一编码

确保文件读写编码一致,例如 UTF-8,防止中文或特殊字符乱码。

4.大数据量处理

对于数据量非常大时,可以按批次处理或拆分文件,减少内存压力。

五、小结

本文展示了在 Java 中实现 Excel 与 TXT 文件互转的方法:

  • Excel 转 TXT:使用 Worksheet.saveToFile 可快速导出 TXT,无需手动循环单元格。
  • TXT 转 Excel:逐行读取 TXT,并按列写入单元格,操作直观。

通过这些方法,可以在日常开发中方便地进行报表导出、日志分析或数据迁移,同时保证数据准确性和编码正确性。

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

相关文章

  • 详解Spring Security怎么从数据库加载我们的用户

    详解Spring Security怎么从数据库加载我们的用户

    这篇文章主要为大家介绍了Spring Security怎么从数据库加载我们的用户示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 深入理解Java中的volatile关键字(总结篇)

    深入理解Java中的volatile关键字(总结篇)

    volatile这个关键字,不仅仅在Java语言中有,在很多语言中都有的,而且其用法和语义也都是不尽相同的。这篇文章主要介绍了Java中的volatile关键字,需要的朋友可以参考下
    2018-10-10
  • Fluent Mybatis实现环境隔离和租户隔离

    Fluent Mybatis实现环境隔离和租户隔离

    我们在实际的业务开发中,经常会碰到环境逻辑隔离和租户数据逻辑隔离的问题。本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java自定义协议报文封装 添加Crc32校验的实例

    Java自定义协议报文封装 添加Crc32校验的实例

    下面小编就为大家分享一篇Java自定义协议报文封装 添加Crc32校验的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • @JsonSerialize序列化注解的使用

    @JsonSerialize序列化注解的使用

    这篇文章主要介绍了@JsonSerialize序列化注解的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring IOC容器基于XML外部属性文件的Bean管理

    Spring IOC容器基于XML外部属性文件的Bean管理

    这篇文章主要为大家介绍了Spring IOC容器Bean管理XML外部属性文件,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 基于Java中两种jersey文件上传方式

    基于Java中两种jersey文件上传方式

    这篇文章主要介绍了基于Java中两种jersey文件上传方式的相关资料,需要的朋友可以参考下
    2016-01-01
  • java利用SMB读取远程文件的方法

    java利用SMB读取远程文件的方法

    这篇文章主要为大家详细介绍了java利用SMB读取远程文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • SpringCloud中Sentinel基础场景和异常处理方式

    SpringCloud中Sentinel基础场景和异常处理方式

    这篇文章主要介绍了SpringCloud中Sentinel基础场景和异常处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • RocketMQ消息丢失场景以及解决方法

    RocketMQ消息丢失场景以及解决方法

    这篇文章主要给大家介绍了关于RocketMQ消息丢失场景以及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论