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 中添加如下依赖:

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 文件的方法,无需手动遍历单元格,同时可以指定列分隔符和字符编码。

示例代码

java 复制代码
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 时,需要按行读取文本,拆分字段,然后写入对应单元格。

示例代码

arduino 复制代码
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 转换时,可以注意以下几点:

  • 缓冲读写
    使用 BufferedReaderBufferedWriter 进行文件读写,提高效率。
  • 统一分隔符
    导出和导入使用相同的分隔符,避免列错位。
  • 统一编码
    确保文件读写编码一致,例如 UTF-8,防止中文或特殊字符乱码。
  • 大数据量处理
    对于数据量非常大时,可以按批次处理或拆分文件,减少内存压力。

五、小结

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

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

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

相关推荐
浮游本尊3 小时前
Java学习第22天 - 云原生与容器化
java
渣哥4 小时前
原来 Java 里线程安全集合有这么多种
java
间彧5 小时前
Spring Boot集成Spring Security完整指南
java
间彧5 小时前
Spring Secutiy基本原理及工作流程
java
Java水解6 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆8 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学9 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole9 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊9 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端