将纯文本数据转换为结构化的 Excel 工作簿是 Java 开发人员经常需要执行的任务,以便分析或共享信息。 Conholdate.Total for Java 是一个强大的 SDK,可简化在任何服务器或桌面环境的 Java 工作流中将 TXT 转换为 XLSX 的过程。在本指南中,您将学习如何设置库,逐步走过每个编码步骤,探索转换选项,并应用性能技巧以高效处理大文件。

开始之前:先决条件和安装

要遵循本教程,您需要:

  • Java Development Kit 8 或更高版本
  • 一个 IDE,例如 IntelliJ IDEA 或 Eclipse
  • 用于依赖管理的 Maven
  • 访问互联网以下载 SDK 工件

将 Conholdate Maven 仓库和 SDK 依赖添加到您的 pom.xml:

<repositories>
  <repository>
    <id>conholdate-repo</id>
    <name>Conholdate Maven Repository</name>
    <url>https://repository.conholdate.com/repo/</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.conholdate</groupId>
  <artifactId>conholdate-total</artifactId>
  <version>24.9</version>
  <type>pom</type>
</dependency>

从官方页面下载最新的 SDK 包: 下载 Conholdate.Total for Java。依赖解析完成后,您即可开始编码。下一节将逐步演示实现过程。

一步一步构建:在 Java 中将 TXT 转换为 XLSX

步骤 1:验证输入文件是否存在

首先,确保源 TXT 文件存在。代码检查文件路径,如果找不到文件则会中止。

String inputPath = "sample.txt";
File inputFile = new File(inputPath);
if (!inputFile.exists() || !inputFile.isFile()) {
    System.err.println("Input file not found: " + inputPath);
    return;
}

步骤 2:设置转换选项

配置 SDK 解释 TXT 数据的方式。您可以设置分隔符(制表符、逗号、分号等),保留原始格式,并为大文件启用内存缓存。

XlsxConvertOptions options = new XlsxConvertOptions();
options.setDelimiter('\t');               // Tab‑delimited example
options.setPreserveOriginalFormatting(true);
options.setEnableMemoryCache(true);

欲了解更多详情,请参阅 XlsxConvertOptions API reference。

步骤 3:执行转换

使用输入文件创建一个 Conversion 实例,并调用 convert 生成 XLSX 输出。

String outputPath = "sample.xlsx";
try (Conversion conversion = new Conversion(inputFile)) {
    conversion.convert(outputPath, options);
} catch (ConversionException | IOException e) {
    System.err.println("Conversion failed: " + e.getMessage());
    e.printStackTrace();
    return;
}

Conversion 类在幕后处理繁重的工作,将 TXT 文件的每一行转换为电子表格中的行和列。

步骤 4:检查输出文件并记录结果

转换后,验证已创建 XLSX 文件且文件不为空。

File outputFile = new File(outputPath);
if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
    System.out.println("Conversion succeeded. Output file: " + outputPath);
} else {
    System.err.println("Conversion completed but output file is missing or empty.");
}

步骤 5:使用 Apache POI 进行快速验证

可选地,使用 Apache POI 读取生成的工作簿并确认工作表和行数。

try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
    int sheetCount = workbook.getNumberOfSheets();
    System.out.println("Workbook contains " + sheetCount + " sheet(s).");
    if (sheetCount > 0) {
        Sheet sheet = workbook.getSheetAt(0);
        int rowCount = sheet.getPhysicalNumberOfRows();
        System.out.println("First sheet row count: " + rowCount);
    }
} catch (IOException ex) {
    System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
}

转换完成后,您现在可以探索其他配置选项或将该过程扩展为批量转换多个文件。

完整的 Java 将 TXT 转换为 XLSX 示例

以下代码演示了使用 Conholdate.Total for Java 将 TXT 转换为 XLSX 的完整 Java 工作流实现。

import com.groupdocs.conversion.Conversion;
import com.groupdocs.conversion.options.convert.XlsxConvertOptions;
import com.groupdocs.conversion.exceptions.ConversionException;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TxtToXlsxConverter {
    public static void main(String[] args) {
        // Input TXT file and desired XLSX output paths
        String inputPath = "sample.txt";
        String outputPath = "sample.xlsx";

// Verify that the input file exists
        File inputFile = new File(inputPath);
        if (!inputFile.exists() || !inputFile.isFile()) {
            System.err.println("Input file not found: " + inputPath);
            return;
        }

// Configure conversion options
        XxlsxConvertOptions options = new XlsxConvertOptions();
        // Set delimiter (tab, comma, semicolon, etc.). Here we use tab.
        options.setDelimiter('\t');
        // Preserve original formatting where possible
        options.setPreserveOriginalFormatting(true);
        // Enable memory cache to improve performance on large files
        options.setEnableMemoryCache(true);

// Perform the conversion
        try (Conversion conversion = new Conversion(inputFile)) {
            conversion.convert(outputPath, options);
        } catch (ConversionException | IOException e) {
            System.err.println("Conversion failed: " + e.getMessage());
            e.printStackTrace();
            return;
        }

// Validate that the XLSX file was created and is not empty
        File outputFile = new File(outputPath);
        if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
            System.out.println("Conversion succeeded. Output file: " + outputPath);

// Optional quick validation using Apache POI
            try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
                int sheetCount = workbook.getNumberOfSheets();
                System.out.println("Workbook contains " + sheetCount + " sheet(s).");
                if (sheetCount > 0) {
                    Sheet sheet = workbook.getSheetAt(0);
                    int rowCount = sheet.getPhysicalNumberOfRows();
                    System.out.println("First sheet row count: " + rowCount);
                }
            } catch (IOException ex) {
                System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
            }
        } else {
            System.err.println("Conversion completed but output file is missing or empty.");
        }
    }
}

注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

配置转换选项

SDK 提供了多种选项,让您能够微调转换过程:

  • Delimiter - 确定 SDK 如何将 TXT 文件的每一行拆分为列。示例使用制表符 ('\t')。您可以将其更改为逗号 (',') 或其他符合源数据的字符。
  • PreserveOriginalFormatting - 当设置为 true 时,SDK 会尝试在生成的 XLSX 单元格中保留原始文本样式(如粗体或斜体)。
  • EnableMemoryCache - 启用此标志可通过在内存中缓存中间数据来提升大文件的性能。

这些选项通过 XlsxConvertOptions 对象进行配置,如上面的逐步说明部分所示。

优化转换性能

在转换大型 TXT 文件时,请考虑以下提示:

  1. Enable Memory Cache - options.setEnableMemoryCache(true); 可减少磁盘 I/O 并加快处理速度。
  2. Stream the Input - SDK 以流式方式读取源文件,但应避免在转换前将整个文件加载到 String 中。
  3. Reuse Conversion Instances - 如果需要转换大量文件,请为每个线程创建一个 Conversion 对象,并在每个文件上重复使用,以最小化对象创建开销。
  4. Adjust JVM Heap - 对于非常大的数据集,请增大 JVM 堆大小(-Xmx2g 或更高),以防止 OutOfMemoryError。

应用这些实践可确保在 Java 中将 TXT 转换为 XLSX 的操作即使在处理千兆字节大小的源文件时,也保持快速且内存高效。

总结

您现在已经了解如何在 Java 中使用 Conholdate.Total for Java 将 TXT 转换为 XLSX。SDK 处理分隔符解析、格式保留和内存管理,使您能够在不依赖 Microsoft Office 的情况下生成专业的 Excel 工作簿。对于生产部署,请记得获取合适的许可证;您可以在定价页面查看定价详情,并在临时许可证页面获取用于测试的临时许可证。借助本指南中的代码和技巧,您可以将 TXT‑to‑XLSX 转换集成到任何 Java 应用程序中,实现批量处理自动化,并以用户易于操作的格式交付数据。

FAQs

如何在 Java 中使用 SDK 将 TXT 转换为 XLSX?

使用 Conversion 类和 XlsxConvertOptions。设置所需的分隔符,启用内存缓存,并调用 conversion.convert(outputPath, options)。完整示例在 "完整工作示例" 部分提供。

我可以在不编写自定义解析代码的情况下将分隔的 TXT 文件转换为 XLSX 吗?

可以。SDK 的 XlsxConvertOptions.setDelimiter 方法允许您指定分隔符(逗号、制表符、分号等),因此您可以在 Java 中通过一次 API 调用将分隔的 TXT 转换为 XLSX。

是否可以从单个 TXT 源创建多工作表工作簿?

虽然基本示例只创建一个工作表,但您可以通过编程方式拆分输入数据,并为每个片段调用单独的转换,然后使用 Apache POI 或 SDK 的高级功能将生成的工作表合并为多工作表 XLSX 工作簿。

阅读更多