Преобразование данных обычного текста в структурированную книгу Excel — частая задача для Java‑разработчиков, которым необходимо анализировать или делиться информацией. Conholdate.Total for Java — мощный SDK, который упрощает конвертацию TXT в XLSX в Java‑рабочем процессе на любом сервере или настольном окружении. В этом руководстве вы узнаете, как настроить библиотеку, пройдёте каждый шаг кодирования, изучите параметры конвертации и примените рекомендации по производительности для эффективной работы с большими файлами.

Прежде чем начать: Предварительные требования и установка

Чтобы следовать этому руководству, вам понадобится:

  • Java Development Kit 8 или выше
  • IDE, например IntelliJ IDEA или Eclipse
  • Maven для управления зависимостями
  • Доступ в интернет для загрузки артефактов SDK

Добавьте репозиторий Maven Conholdate и зависимость 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 с официальной страницы: Download Conholdate.Total for Java. После того как зависимость будет разрешена, вы готовы приступить к написанию кода. Следующий раздел пошагово рассматривает реализацию.

Пошаговое создание: преобразование TXT в XLSX в Java

Шаг 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);

Для получения более подробной информации см. справка API XlsxConvertOptions.

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

С завершением конвертации вы теперь можете изучить дополнительные параметры конфигурации или масштабировать процесс для пакетного преобразования множества файлов.

Полный рабочий пример конвертации TXT в XLSX на Java

Следующий код демонстрирует полную реализацию процесса преобразования TXT в XLSX на Java с использованием 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.");
        }
    }
}

Примечание: Этот пример кода демонстрирует базовую функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации в соответствии с вашей реальной средой, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.

Настройка параметров конвертации

SDK предоставляет несколько вариантов, позволяющих точно настроить процесс конвертации:

  • Delimiter - Определяет, как SDK разбивает каждую строку TXT‑файла на столбцы. В примере используется символ табуляции ('\t'). Вы можете изменить его на запятую (',') или любой другой символ, соответствующий вашим исходным данным.
  • PreserveOriginalFormatting - При значении true SDK пытается сохранить оригинальное форматирование текста (например, полужирный или курсив) в полученных ячейках XLSX.
  • EnableMemoryCache - Включение этого флага повышает производительность при работе с большими файлами за счёт кэширования промежуточных данных в памяти.

Эти параметры настраиваются через объект XlsxConvertOptions, как показано в разделе пошагового руководства выше.

Оптимизация производительности конвертации

При конвертации больших файлов TXT учитывайте следующие рекомендации:

  1. Включить кэш памяти - options.setEnableMemoryCache(true); уменьшает ввод‑вывод на диск и ускоряет обработку.
  2. Потоковая передача входных данных - SDK читает исходный файл потоково, но избегайте загрузки всего файла в String перед конвертацией.
  3. Повторное использование экземпляров конвертации - Если нужно конвертировать много файлов, создайте один объект Conversion на поток и повторно используйте его для каждого файла, чтобы минимизировать накладные расходы на создание объектов.
  4. Настройка кучи JVM - Для очень больших наборов данных увеличьте размер кучи JVM (-Xmx2g или больше), чтобы предотвратить OutOfMemoryError.

Применение этих практик гарантирует, что операция преобразования TXT в XLSX на Java останется быстрой и экономичной по памяти даже при работе с исходными файлами размером в гигабайты.

Подведение итогов

Теперь вы видели, как конвертировать TXT в XLSX в Java с помощью Conholdate.Total for Java. SDK обрабатывает разбор разделителей, сохранение форматирования и управление памятью, позволяя создавать профессиональные рабочие книги Excel без необходимости использовать Microsoft Office. Для развертывания в продакшн не забудьте приобрести соответствующую лицензию; детали цен можно посмотреть на странице ценообразования и временную лицензию для тестирования получить на странице временной лицензии. С кодом и советами из этого руководства вы сможете интегрировать конвертацию TXT‑в‑XLSX в любое Java‑приложение, автоматизировать пакетную обработку и предоставлять данные в формате, который конечные пользователи могут легко использовать.

FAQs

Как конвертировать TXT в XLSX в Java с использованием SDK?

Используйте класс Conversion вместе с XlsxConvertOptions. Установите нужный разделитель, включите кэш памяти и вызовите conversion.convert(outputPath, options). Полный пример предоставлен в разделе «Full Working Example».

Могу ли я конвертировать файлы TXT с разделителями в XLSX без написания собственного кода парсинга?

Да. Метод XlsxConvertOptions.setDelimiter SDK позволяет указать разделитель (запятая, табуляция, точка с запятой и т.д.), поэтому вы можете конвертировать файлы TXT с разделителями в XLSX в Java одним вызовом API.

Можно ли создать многолистовую книгу из одного TXT‑источника?

Хотя в базовом примере создаётся один лист, вы можете программно разбить входные данные и вызвать отдельные конвертации для каждого сегмента, а затем объединить полученные листы в многолистовую XLSX‑книгу, используя Apache POI или расширенные возможности SDK.

Читать дальше