Chuyển đổi dữ liệu văn bản thuần thành một sổ làm việc Excel có cấu trúc là một nhiệm vụ thường gặp đối với các nhà phát triển Java cần phân tích hoặc chia sẻ thông tin. Conholdate.Total for Java là một SDK mạnh mẽ giúp đơn giản hóa việc chuyển đổi TXT sang XLSX trong quy trình làm việc Java trên bất kỳ môi trường máy chủ hoặc máy để bàn nào. Trong hướng dẫn này, bạn sẽ học cách thiết lập thư viện, đi qua từng bước mã, khám phá các tùy chọn chuyển đổi và áp dụng các mẹo hiệu năng để xử lý các tệp lớn một cách hiệu quả.

Trước Khi Bắt Đầu: Các Yêu Cầu và Cài Đặt

Để làm theo hướng dẫn này, bạn cần:

  • Java Development Kit 8 hoặc cao hơn
  • Một IDE như IntelliJ IDEA hoặc Eclipse
  • Maven để quản lý phụ thuộc
  • Truy cập internet để tải xuống các artifact SDK

Thêm kho Maven của Conholdate và phụ thuộc SDK vào tệp pom.xml của bạn:

<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>

Tải xuống gói SDK mới nhất từ trang chính thức: Tải xuống Conholdate.Total cho Java. Sau khi phụ thuộc đã được giải quyết, bạn đã sẵn sàng bắt đầu viết mã. Phần tiếp theo sẽ hướng dẫn triển khai từng bước.

Xây Dựng Từng Bước: Chuyển Đổi TXT sang XLSX trong Java

Bước 1: Xác minh tệp đầu vào tồn tại

Đầu tiên, hãy đảm bảo tệp TXT nguồn tồn tại. Mã kiểm tra đường dẫn tệp và hủy nếu không thể tìm thấy tệp.

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

Bước 2: Thiết lập các tùy chọn chuyển đổi

Cấu hình cách SDK sẽ diễn giải dữ liệu TXT. Bạn có thể đặt dấu phân cách (tab, dấu phẩy, dấu chấm phẩy, v.v.), giữ nguyên định dạng gốc và bật bộ nhớ đệm cho các tệp lớn.

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

Để biết thêm chi tiết, xem XlsxConvertOptions API reference.

Bước 3: Thực hiện chuyển đổi

Tạo một thể hiện Conversion với tệp đầu vào và gọi convert để tạo ra đầu ra 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;
}

Lớp Conversion xử lý các công việc nặng nề phía sau, chuyển mỗi dòng của tệp TXT thành các hàng và cột trong bảng tính.

Bước 4: Kiểm tra tệp đầu ra và ghi lại kết quả

Sau khi chuyển đổi, hãy xác minh rằng tệp XLSX đã được tạo và không rỗng.

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.");
}

Bước 5: Xác thực nhanh với Apache POI

Tùy chọn, sử dụng Apache POI để đọc workbook đã tạo và xác nhận số lượng sheet và hàng.

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());
}

Khi quá trình chuyển đổi đã hoàn tất, bạn có thể khám phá các tùy chọn cấu hình bổ sung hoặc mở rộng quy trình để chuyển đổi hàng loạt nhiều tệp.

Ví dụ hoạt động đầy đủ để chuyển đổi TXT sang XLSX trong Java

Đoạn mã sau trình bày việc triển khai đầy đủ quy trình chuyển đổi TXT sang XLSX trong Java bằng Conholdate.Total for 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.");
        }
    }
}

Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.

Cấu hình tùy chọn chuyển đổi

SDK cung cấp một số tùy chọn cho phép bạn tinh chỉnh quá trình chuyển đổi:

  • Delimiter - Xác định cách SDK tách mỗi dòng của tệp TXT thành các cột. Ví dụ sử dụng ký tự tab ('\t'). Bạn có thể thay đổi nó thành dấu phẩy (',') hoặc bất kỳ ký tự nào khác phù hợp với dữ liệu nguồn của bạn.
  • PreserveOriginalFormatting - Khi được đặt thành true, SDK cố gắng giữ nguyên định dạng văn bản gốc (như in đậm hoặc in nghiêng) trong các ô XLSX kết quả.
  • EnableMemoryCache - Kích hoạt cờ này cải thiện hiệu năng cho các tệp lớn bằng cách lưu trữ tạm thời dữ liệu trung gian trong bộ nhớ.

Các tùy chọn này được cấu hình thông qua đối tượng XlsxConvertOptions, như đã được trình bày trong phần hướng dẫn từng bước ở trên.

Tối ưu hóa hiệu suất chuyển đổi

Khi chuyển đổi các tệp TXT lớn, hãy xem xét các mẹo sau:

  1. Bật bộ nhớ đệm - options.setEnableMemoryCache(true); giảm I/O đĩa và tăng tốc xử lý.
  2. Phát luồng đầu vào - SDK đọc tệp nguồn theo cách phát luồng, nhưng tránh tải toàn bộ tệp vào một String trước khi chuyển đổi.
  3. Tái sử dụng các đối tượng chuyển đổi - Nếu bạn cần chuyển đổi nhiều tệp, tạo một đối tượng Conversion duy nhất cho mỗi luồng và tái sử dụng nó cho mỗi tệp để giảm thiểu chi phí tạo đối tượng.
  4. Điều chỉnh heap JVM - Đối với các bộ dữ liệu rất lớn, tăng kích thước heap JVM (-Xmx2g hoặc cao hơn) để tránh OutOfMemoryError.

Áp dụng các thực tiễn này đảm bảo rằng quá trình chuyển đổi TXT sang XLSX trong Java vẫn nhanh và tiết kiệm bộ nhớ ngay cả khi làm việc với các tệp nguồn có kích thước hàng gigabyte.

Kết luận

Bạn đã thấy cách chuyển đổi TXT sang XLSX trong Java bằng cách sử dụng Conholdate.Total for Java. SDK xử lý việc phân tích dấu phân cách, bảo toàn định dạng và quản lý bộ nhớ, cho phép bạn tạo ra các sổ làm việc Excel chuyên nghiệp mà không cần dựa vào Microsoft Office. Đối với triển khai trong môi trường sản xuất, hãy nhớ mua giấy phép phù hợp; bạn có thể xem chi tiết giá tại trang giá và nhận giấy phép tạm thời để thử nghiệm tại trang giấy phép tạm thời. Với mã và các mẹo trong hướng dẫn này, bạn có thể tích hợp việc chuyển đổi TXT‑to‑XLSX vào bất kỳ ứng dụng Java nào, tự động hoá xử lý hàng loạt và cung cấp dữ liệu ở định dạng mà người dùng cuối có thể dễ dàng thao tác.

Câu hỏi thường gặp

Làm thế nào để chuyển đổi TXT sang XLSX trong Java bằng SDK?

Sử dụng lớp Conversion cùng với XlsxConvertOptions. Đặt dấu phân cách mong muốn, bật bộ nhớ đệm, và gọi conversion.convert(outputPath, options). Ví dụ đầy đủ được cung cấp trong phần “Full Working Example”.

Tôi có thể chuyển đổi các tệp TXT có định dạng phân cách sang XLSX mà không cần viết mã phân tích tùy chỉnh không?

Có. Phương thức XlsxConvertOptions.setDelimiter của SDK cho phép bạn chỉ định ký tự phân cách (dấu phẩy, tab, dấu chấm phẩy, v.v.) để bạn có thể chuyển đổi tệp TXT có phân cách sang XLSX trong Java chỉ bằng một lời gọi API duy nhất.

Có thể tạo một sổ làm việc đa trang tính từ một nguồn TXT duy nhất không?

Trong khi ví dụ cơ bản tạo ra một trang tính, bạn có thể chia dữ liệu đầu vào thành các phần bằng chương trình và gọi các chuyển đổi riêng biệt cho mỗi đoạn, sau đó kết hợp các trang tính kết quả thành một sổ làm việc XLSX đa trang tính bằng cách sử dụng Apache POI hoặc các tính năng nâng cao của SDK.

Đọc Thêm