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

مثال كامل يعمل لتقسيم مصنف Excel في Java

يوضح هذا المثال كيفية تقسيم دفتر عمل Excel إلى ملفات منفصلة باستخدام Conholdate.Total.

import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.SaveFormat;
import java.io.File;

public class ExcelSplitter {
    public static void main(String[] args) {
        String sourceFile = "input.xlsx";
        String outputDir = "splitted";

File dir = new File(outputDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }

try {
            Workbook sourceWorkbook = new Workbook(sourceFile);
            int sheetCount = sourceWorkbook.getWorksheets().getCount();

for (int i = 0; i < sheetCount; i++) {
                Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
                Workbook splitWorkbook = new Workbook();

splitWorkbook.getWorksheets().addCopy(sheet);
                if (splitWorkbook.getWorksheets().getCount() > 1) {
                    splitWorkbook.getWorksheets().removeAt(0);
                }

String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
                String outPath = outputDir + File.separator + safeName + ".xlsx";

splitWorkbook.save(outPath, SaveFormat.XLSX);
                splitWorkbook.dispose();
            }

sourceWorkbook.dispose();
        } catch (Exception e) {
            System.err.println("Error during splitting: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

ملاحظة: يوضح مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتتناسب مع بيئتك الفعلية، وتحقق من تثبيت جميع الاعتمادات المطلوبة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.

الفئات الرئيسية المستخدمة

يعتمد المقتطف على ثلاث فئات أساسية من مكتبة Aspose.Cells التي تُرفق مع Conholdate.Total:

  • Workbook - يمثل ملف Excel كامل ويوفر طرقًا لتحميل وحفظ وتعديل دفاتر العمل. راجع مرجع واجهة برمجة تطبيقات فئة Workbook.
  • Worksheet - يتيح الوصول إلى ورقة فردية داخل دفتر العمل.
  • SaveFormat - تعداد يحدد تنسيق الإخراج؛ SaveFormat.XLSX يكتب الملف في حاوية XLSX الحديثة.

هذه الفئات خفيفة الوزن، لكنها تخصّص موارد أصلية، لذا فإن التخلص منها بسرعة (كما هو موضح) أمر ضروري لـ إدارة الذاكرة لملفات Excel الكبيرة.

تحليل مصنف Excel المقسم في Java

يتبع البرنامج تسلسلًا واضحًا يمكنك تعديله لأي سير عمل Excel Split Java.

شرح خطوة بخطوة

  1. تحميل دفتر العمل المصدر - new Workbook(sourceFile) يقرأ ملف XLSX المدخل.
Workbook sourceWorkbook = new Workbook(sourceFile);
  1. إنشاء دليل الإخراج - يتحقق مما إذا كان المجلد الهدف موجودًا ويقوم بإنشائه إذا لزم الأمر.
File dir = new File(outputDir);
if (!dir.exists()) {
    dir.mkdirs();
}
  1. التكرار عبر أوراق العمل - sourceWorkbook.getWorksheets().getCount() يعطي عدد الأوراق، وتقوم الحلقة بمعالجة كل ورقة.
for (int i = 0; i < sheetCount; i++) {
    Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
}
  1. نسخ الورقة الحالية إلى دفتر عمل جديد - addCopy(sheet) ينسخ الورقة، ثم يتم إزالة الورقة الفارغة الافتراضية إذا كانت موجودة.
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
    splitWorkbook.getWorksheets().removeAt(0);
}
  1. حفظ دفتر العمل المقسم - يولد اسم ملف آمن ويكتب الورقة كملف XLSX.
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
  1. تحرير الموارد - يستدعي dispose() على كل من دفتر العمل المؤقت والدفتر الأصلي لتحرير الذاكرة وتجنب التسريبات الأصلية.

التدفق الكامل هو مثال عملي مثال كود جافا لتقسيم أوراق إكسل يمكن تضمينه في خطوط معالجة بيانات أكبر.

المتطلبات المسبقة والإعداد - البدء مع Conholdate.Total

قبل أن تتمكن من تجميع وتشغيل المثال، تأكد من أن بيئة التطوير الخاصة بك تلبي المتطلبات المسبقة التالية.

تكوين Maven

أضف مستودع 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 تحميل. تتطلب المكتبة Java 8 أو أحدث وتعمل على أي JVM قياسي.

تكوين الترخيص

يتطلب الاستخدام في بيئة الإنتاج رخصة صالحة. يمكنك الحصول على رخصة مؤقتة للاختبار من صفحة الرخصة المؤقتة. للمشاريع طويلة الأمد، راجع خيارات التسعير على صفحة التسعير. بمجرد حصولك على ملف الرخصة، قم بتعيينه في كود بدء تشغيل التطبيق (غير معروض هنا) كما هو موضح في الوثائق.

نصائح عملية لتقسيم Excel بكفاءة

التعامل مع دفاتر عمل كبيرة يتطلب معالجة دقيقة للموارد. تساعدك التوصيات التالية على الحفاظ على سرعة العملية وموثوقيتها.

توصيات إدارة الذاكرة

  • تخلص من كل دفتر عمل مؤقت بعد الحفظ لإطلاق الموارد الأصلية والحفاظ على انخفاض استهلاك الذاكرة.
  • إعادة استخدام الكائنات حيثما أمكن - إنشاء نسخة واحدة من Workbook للمصدر وإعادة استخدام نفس كائن File لمجلد الإخراج يقلل من ضغط جامع القمامة.
  • فكر في وضع البث إذا كان إصدار Conholdate.Total الخاص بك يدعم ذلك؛ يقرأ البث الصفوف عند الطلب بدلاً من تحميل دفتر العمل بالكامل في الذاكرة.

المشكلات الشائعة وكيفية تجنبها

العَرَضالسبب المحتملالحل
java.lang.OutOfMemoryErrorالاحتفاظ بكل مصنف مقسّم في الذاكرةتأكد من استدعاء splitWorkbook.dispose() داخل الحلقة، كما هو موضح.
خطأ اسم ملف غير صالحاسم الورقة يحتوي على أحرف مثل `\ / : * ? " < >`
ملفات الإخراج مفقودةمسار دليل الإخراج غير صحيح أو غير قابل للكتابةتحقق من أن outputDir يشير إلى موقع لديه أذونات كتابة.

محسنات الأداء

  • تسجيل التقدم - طباعة اسم الورقة قبل الحفظ تساعدك على تحديد نقطة الفشل في الدفعات الكبيرة.
  • زيادة مساحة الذاكرة المؤقتة لـ JVM - لالكتيبات الكبيرة جدًا، ابدأ JVM باستخدام -Xmx2g (أو أعلى) لتوفير المزيد من الذاكرة للعملية.
  • المعالجة المتوازية - إذا لم تكن الكتيبة مترابطة، يمكنك تقسيم العمل عبر عدة خيوط، لكن تذكر أن المكتبة الأصلية الأساسية ليست دائمًا آمنة للاستخدام المتعدد الخيوط؛ اختبر بدقة.

باتباع هذه النصائح، يمكنك بكفاءة split Excel Workbook in Java حتى عند التعامل مع آلاف الأوراق أو دفاتر العمل التي يبلغ حجمها مئات الميغابايت.

الخاتمة

تقسيم مصنف Excel إلى ملفات XLSX منفردة باستخدام Conholdate.Total for Java هو تقنية بسيطة لكنها قوية للمطورين الذين يحتاجون إلى وصول دقيق إلى بيانات الأوراق. يوضح الكود المقدم سير العمل الكامل، من تحميل المصنف المصدر إلى تحرير الموارد بعد حفظ كل ورقة. استخدام هذا النهج لت تقسيم مصنف Excel في Java يمنحك تحكمًا دقيقًا في كل ورقة ويتكامل بسهولة مع خطوط معالجة البيانات الأكبر. تذكر الحصول على ترخيص مناسب للاستخدام في الإنتاج؛ يمكنك استكشاف خيارات التسعير على صفحة التسعير أو طلب ترخيص مؤقت من صفحة الترخيص المؤقت. مع تثبيت SDK وتطبيق توصيات أفضل الممارسات، أنت جاهز للتعامل حتى مع أكثر سيناريوهات تقسيم Excel في Java تطلبًا.

الأسئلة الشائعة

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

هل SDK متوافق مع جميع إصدارات Java؟
يدعم SDK Java 8 وما بعده. تأكد من أن مشروعك يستهدف JDK متوافق.

هل أحتاج إلى تعيين ترخيص قبل تشغيل الكود؟
يتطلب الترخيص للنشر في بيئات الإنتاج. يمكنك الحصول على ترخيص مؤقت للاختبار من صفحة الترخيص المؤقت ومراجعة الأسعار الكاملة على صفحة الأسعار.

ماذا لو كان دفتر العمل يحتوي على آلاف الأوراق؟
قم بمعالجة دفتر العمل على دفعات، وتخلص من كل دفتر عمل مؤقت على الفور، وفكر في زيادة حجم ذاكرة JVM إذا لزم الأمر. يساعد تسجيل اسم كل ورقة في تحديد أي ورقة مشكلة بسرعة.

اقرأ المزيد