0
点赞
收藏
分享

微信扫一扫

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

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

五、小结

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

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

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


举报

相关推荐

0 条评论