تبدیل داده‌های متن ساده به یک کتاب‌کار Excel ساختار یافته یک کار رایج برای توسعه‌دهندگان Java است که نیاز به تجزیه و تحلیل یا به‌اشتراک‌گذاری اطلاعات دارند. Conholdate.Total for Java یک SDK قدرتمند است که تبدیل TXT به XLSX را در جریان کار Java بر روی هر سرور یا محیط دسکتاپ ساده می‌کند. در این راهنما شما یاد خواهید گرفت چگونه کتابخانه را تنظیم کنید، هر گام کدنویسی را مرور کنید، گزینه‌های تبدیل را بررسی کنید و نکات عملکردی را برای پردازش مؤثر فایل‌های بزرگ اعمال کنید.

قبل از شروع: پیش‌نیازها و نصب

برای دنبال کردن این آموزش به موارد زیر نیاز دارید:

  • Java Development Kit 8 یا بالاتر
  • یک IDE مانند IntelliJ IDEA یا Eclipse
  • Maven برای مدیریت وابستگی‌ها
  • دسترسی به اینترنت برای دانلود SDK artifacts

مخزن 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 از صفحه رسمی: دانلود Conholdate.Total for 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;
}

مرحله ۲: تنظیم گزینه‌های تبدیل

پیکربندی کنید که SDK چگونه داده‌های TXT را تفسیر کند. می‌توانید جداکننده (تب، کاما، نقطه‌ویرگول و غیره) را تنظیم کنید، قالب‌بندی اصلی را حفظ کنید و برای فایل‌های بزرگ کش حافظه را فعال کنید.

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

برای جزئیات بیشتر، به مرجع API XlsxConvertOptions مراجعه کنید.

مرحله 3: اجرای تبدیل

یک نمونه از Conversion را با فایل ورودی ایجاد کنید و برای تولید خروجی XLSX، convert را فراخوانی کنید.

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 در جاوا

کد زیر پیاده‌سازی کامل تبدیل 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. Enable Memory Cache - options.setEnableMemoryCache(true); مصرف I/O دیسک را کاهش می‌دهد و سرعت پردازش را افزایش می‌دهد.
  2. Stream the Input - SDK فایل منبع را به صورت جریان‌وار می‌خواند، اما از بارگذاری کل فایل در یک String قبل از تبدیل خودداری کنید.
  3. Reuse Conversion Instances - اگر نیاز به تبدیل تعداد زیادی فایل دارید، یک شیء Conversion برای هر نخ ایجاد کنید و برای هر فایل از آن مجدداً استفاده کنید تا هزینهٔ ایجاد شیء به حداقل برسد.
  4. Adjust JVM Heap - برای مجموعه‌داده‌های بسیار بزرگ، اندازهٔ heap JVM را (-Xmx2g یا بالاتر) افزایش دهید تا از بروز OutOfMemoryError جلوگیری کنید.

به‌کارگیری این روش‌ها اطمینان می‌دهد که عملیات تبدیل TXT به XLSX در جاوا حتی با فایل‌های منبع به‌صورت گیگابایتی سریع و حافظه‑کارآمد باقی می‌ماند.

جمع‌بندی

شما اکنون دیده‌اید که چگونه می‌توانید TXT را به XLSX در جاوا تبدیل کنید با استفاده از Conholdate.Total for Java. SDK تجزیه‌گر جداکننده‌ها، حفظ قالب‌بندی و مدیریت حافظه را بر عهده می‌گیرد و به شما امکان می‌دهد کتاب‌کارهای حرفه‌ای Excel را بدون وابستگی به Microsoft Office تولید کنید. برای استقرارهای تولیدی، به‌خاطر داشته باشید که باید یک لایسنس مناسب تهیه کنید؛ می‌توانید جزئیات قیمت‌گذاری را در صفحه قیمت‌گذاری مرور کنید و برای تست یک لایسنس موقت دریافت کنید در صفحه لایسنس موقت. با کد و نکات موجود در این راهنما، می‌توانید تبدیل TXT‑به‑XLSX را در هر برنامه جاوا‌ای ادغام کنید، پردازش دسته‌ای را خودکار کنید و داده‌ها را در قالبی ارائه دهید که کاربران نهایی به راحتی بتوانند آن را دستکاری کنند.

سوالات متداول

چگونه می‌توانم TXT را به XLSX در جاوا با استفاده از SDK تبدیل کنم؟

از کلاس Conversion همراه با XlsxConvertOptions استفاده کنید. جداکنندهٔ مورد نظر را تنظیم کنید، حافظهٔ کش را فعال کنید، و متد conversion.convert(outputPath, options) را فراخوانی کنید. مثال کامل در بخش «مثال کامل کارکرد» ارائه شده است.

آیا می‌توانم فایل‌های TXT با جداساز را بدون نوشتن کد تجزیه سفارشی به XLSX تبدیل کنم؟

بله. متد XlsxConvertOptions.setDelimiter در SDK به شما امکان می‌دهد جداساز (کاما، تب، نقطه‌ویرگول و غیره) را مشخص کنید تا بتوانید فایل‌های TXT با جداساز را در جاوا با یک فراخوانی API به XLSX تبدیل کنید.

آیا می‌توان یک کتاب‌کار چندبرگه‌ای را از یک منبع TXT واحد ایجاد کرد؟

در حالی که مثال پایه یک برگه ایجاد می‌کند، می‌توانید داده‌های ورودی را به‌صورت برنامه‌نویسی تقسیم کنید و تبدیل‌های جداگانه برای هر بخش فراخوانی کنید، سپس برگه‌های حاصل را با استفاده از Apache POI یا ویژگی‌های پیشرفته SDK به یک کتاب‌کار XLSX چندبرگه‌ای ترکیب کنید.

بیشتر بخوانید