Преобразование данных обычного текста в структурированную книгу 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 - При значении
trueSDK пытается сохранить оригинальное форматирование текста (например, полужирный или курсив) в полученных ячейках XLSX. - EnableMemoryCache - Включение этого флага повышает производительность при работе с большими файлами за счёт кэширования промежуточных данных в памяти.
Эти параметры настраиваются через объект XlsxConvertOptions, как показано в разделе пошагового руководства выше.
Оптимизация производительности конвертации
При конвертации больших файлов TXT учитывайте следующие рекомендации:
- Включить кэш памяти -
options.setEnableMemoryCache(true);уменьшает ввод‑вывод на диск и ускоряет обработку. - Потоковая передача входных данных - SDK читает исходный файл потоково, но избегайте загрузки всего файла в
Stringперед конвертацией. - Повторное использование экземпляров конвертации - Если нужно конвертировать много файлов, создайте один объект
Conversionна поток и повторно используйте его для каждого файла, чтобы минимизировать накладные расходы на создание объектов. - Настройка кучи 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.
