تحويل بيانات النص العادي إلى مصنف Excel منظم هو مهمة شائعة لمطوري Java الذين يحتاجون إلى تحليل أو مشاركة المعلومات. Conholdate.Total for Java هو مجموعة تطوير برمجيات قوية تُبسّط تحويل TXT إلى XLSX في سير عمل Java على أي خادم أو بيئة سطح مكتب. في هذا الدليل ستتعلم كيفية إعداد المكتبة، واستعراض كل خطوة برمجية، واستكشاف خيارات التحويل، وتطبيق نصائح الأداء للتعامل مع الملفات الكبيرة بكفاءة.

قبل البدء: المتطلبات المسبقة والتثبيت

لمتابعة هذا البرنامج التعليمي تحتاج إلى:

  • Java Development Kit 8 أو أعلى
  • بيئة تطوير متكاملة مثل 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 من الصفحة الرسمية: تحميل 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);

لمزيد من التفاصيل، راجع مرجع XlsxConvertOptions API.

الخطوة 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. ضبط حجم Heap في JVM - بالنسبة لمجموعات البيانات الكبيرة جدًا، قم بزيادة حجم heap في JVM (-Xmx2g أو أعلى) لمنع حدوث OutOfMemoryError.

تطبيق هذه الممارسات يضمن أن عملية تحويل TXT إلى XLSX في Java تظل سريعة وفعّالة في استهلاك الذاكرة حتى مع ملفات المصدر بحجم الجيجابايت.

الختام

لقد رأيت الآن كيفية تحويل TXT إلى XLSX في Java باستخدام Conholdate.Total for Java. يتعامل SDK مع تحليل الفواصل، والحفاظ على التنسيق، وإدارة الذاكرة، مما يتيح لك إنشاء دفاتر عمل Excel احترافية دون الاعتماد على Microsoft Office. بالنسبة للنشر في بيئات الإنتاج، تذكر ضرورة الحصول على ترخيص مناسب؛ يمكنك مراجعة تفاصيل الأسعار في صفحة التسعير والحصول على ترخيص مؤقت للاختبار في صفحة الترخيص المؤقت. باستخدام الشيفرة والنصائح الموجودة في هذا الدليل، يمكنك دمج تحويل TXT‑to‑XLSX في أي تطبيق Java، أتمتة المعالجة الدفعية، وتقديم البيانات بتنسيق يمكن للمستخدمين النهائيين التعامل معه بسهولة.

الأسئلة المتكررة

كيف يمكنني تحويل 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 المتقدمة.

اقرأ المزيد