قم بتجميع ملفات Excel متعددة في ملف واحد باستخدام Java

لديك العديد من مصنفات Excel ، وتريد دمجها معًا في ملف واحد لإعداد التقارير أو للاحتفاظ بالبيانات في مكان واحد. بصفتك مطور Java ، يمكنك بسهولة دمج عدة ملفات Excel في ملف واحد برمجيًا. في هذه المقالة ، ستتعلم كيفية دمج ملفات Excel متعددة في ملف واحد باستخدام Java.

تتم مناقشة / تغطية الموضوعات التالية في هذه المقالة:

Java API لدمج ملفات Excel

لدمج عدة ملفات Excel ، سأستخدم Aspose.Cells for Java API. تمكنك واجهة برمجة التطبيقات هذه من إنشاء جداول البيانات أو معالجتها أو تحويلها أو حمايتها أو طباعتها دون الاعتماد على Microsoft Excel. يسمح لك بأداء ميزات أتمتة Excel برمجيًا في تطبيقات Java الخاصة بك.

يمكنك تنزيل JAR الخاص بواجهة برمجة التطبيقات أو فقط إضافة تكوين pom.xml التالي في تطبيق Java المستند إلى Maven لتجربة أمثلة التعليمات البرمجية المذكورة أدناه.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.8</version>
</dependency>

ادمج عدة ملفات Excel في ملف واحد باستخدام Java

يمكنك بسهولة دمج ملفات Excel متعددة في ملف واحد برمجيًا باتباع الخطوات المذكورة أدناه:

  • قم بإنشاء مثيل لفئة Workbook باستخدام أول ملف مصدر
  • قم بإنشاء مثيل لفئة Workbook بملف المصدر الثاني
  • كرر الخطوة أعلاه لدمج أكثر من ملفين
  • قم باستدعاء الأسلوب Combined () مع مثيل الملف المصدر الثاني
  • كرر الخطوة أعلاه لجميع الملفات المصدر واحدًا تلو الآخر
  • احفظ ملف الإخراج عن طريق استدعاء طريقة save () لفئة المصنف

يوضح نموذج التعليمات البرمجية التالي كيفية دمج ملفات Excel متعددة في ملف واحد باستخدام Java.

// افتح ملف Excel الأول.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// افتح ملف Excel الثاني.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// افتح ملف Excel الثالث.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");

// انسخ أوراق عمل ملف Excel الثاني إلى المصنف الأول.
SourceBook1.combine(SourceBook2);

// نسخ أوراق عمل ملف Excel الثالث إلى المصنف الأول.
SourceBook1.combine(SourceBook3);

// احفظ ملف Excel الأول المحدث كملف جديد.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");
ادمج عدة ملفات Excel في ملف واحد باستخدام Java

ادمج عدة ملفات Excel في ملف واحد باستخدام Java

فئة مصنف من API هي الفئة الرئيسية المستخدمة لإنشاء جدول بيانات Excel. يمكّنك من فتح ملفات Excel الأصلية وحفظها. كما يوفر العديد من الخصائص والطرق للعمل مع جدول بيانات Excel. تدمج طريقة الجمع () لهذه الفئة بين المصنف الحالي وكائن مصنف آخر. تقوم طريقة save () لفئة المصنف بحفظ ملف الإخراج في مسار الملف المحدد.

ادمج أوراق عمل محددة لملفات Excel متعددة في ملف واحد باستخدام Java

يمكنك بسهولة دمج أوراق عمل محددة من ملفات Excel متعددة في ملف واحد برمجيًا باتباع الخطوات المذكورة أدناه:

  • قم بإنشاء مثيل لفئة Workbook للملف المصدر 1
  • قم بإنشاء مثيل لفئة Workbook للملف المصدر 2
  • كرر الخطوة أعلاه لدمج أوراق العمل من أكثر من ملفين
  • قم بإنشاء مثيل لفئة Workbook لملف الوجهة
  • أضف ورقة (أوراق) العمل باستخدام طريقة add () لفئة WorksheetCollection
  • قم باستدعاء الأسلوب copy () لنسخ ورقة العمل المحددة من الملف المصدر 1 إلى الملف الوجهة
  • قم باستدعاء طريقة copy () لنسخ ورقة العمل المحددة من الملف المصدر 2 إلى الملف الوجهة
  • إعادة تسمية أوراق العمل في الملف الوجهة باستخدام setName () الأسلوب
  • احفظ ملف الوجهة عن طريق استدعاء طريقة save () لفئة المصنف

يوضح نموذج التعليمات البرمجية التالي كيفية دمج أوراق عمل محددة من ملفات Excel متعددة في ملف واحد باستخدام Java.

String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";

// افتح ملف Excel الأول.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// افتح ملف Excel الثاني.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// إنشاء مصنف الوجهة.
Workbook destWorkbook = new Workbook();

// تتم إضافة ورقة العمل الأولى بشكل افتراضي إلى المصنف. أضف ورقة العمل الثانية.
destWorkbook.getWorksheets().add();

// انسخ ورقة عمل يناير الخاصة بأول ملف Excel إلى ملف الوجهة.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// انسخ ورقة عمل يوليو الخاصة بملف Excel الثاني إلى ملف الوجهة.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// بشكل افتراضي ، تكون أسماء أوراق العمل "Sheet1" و "Sheet2" على التوالي.
// دعونا نعطيهم أسماء ذات مغزى.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// احفظ ملف الوجهة.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
ادمج أوراق عمل محددة لملفات Excel متعددة في ملف واحد باستخدام Java

ادمج أوراق عمل محددة لملفات Excel متعددة في ملف واحد باستخدام Java

ترجع طريقة خاصية getWorksheets () لفئة المصنف مجموعة من جميع أوراق العمل في مصنف. يمكنك إضافة ورقة عمل إلى مجموعة أوراق العمل باستخدام طريقة add ().

تمثل فئة Worksheet من API ورقة عمل واحدة. يوفر العديد من الخصائص والطرق للعمل مع ورقة العمل. تقوم طريقة copy () الخاصة بهذه الفئة بنسخ المحتوى والتنسيقات من ورقة عمل أخرى. توفر فئة ورقة العمل أيضًا أساليب get () للحصول على ورقة عمل محددة بفهرسها أو باسمها. تعيّن طريقة الخاصية setName () اسم ورقة العمل.

دمج أوراق عمل متعددة في ورقة عمل واحدة باستخدام Java

يمكنك بسهولة دمج أوراق عمل متعددة من ملف Excel في ورقة عمل واحدة برمجيًا باتباع الخطوات المذكورة أدناه:

  • قم بإنشاء مثيل لفئة Workbook لملف المصدر
  • أضف ورقة عمل جديدة باستخدام طريقة add ()
  • كرر أوراق عمل المصدر وقم بما يلي:
    • قم بإنشاء نطاق من الخلايا والأعمدة لورقة عمل واحدة باستخدام طريقة createRange ()
    • انسخ البيانات من نطاق المصدر إلى النطاق الوجهة باستخدام طريقة copy ()
  • احفظ ملف الإخراج عن طريق استدعاء طريقة save () لفئة المصنف

يوضح نموذج التعليمات البرمجية التالي كيفية دمج أوراق عمل متعددة في ورقة عمل واحدة باستخدام Java.

// افتح ملف Excel يحتوي على أوراق العمل:
// يناير وفبراير ومارس وأبريل
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// أضف ورقة عمل باسم Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// كرر أوراق عمل المصدر لنسخ البيانات إلى ملف
// ورقة عمل موجزة
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

for (String sheetName : nameOfSourceWorksheets)
{
  // احصل على ورقة العمل
    Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

    Range sourceRange = null;
    Range destRange = null;

    // في حالة ورقة عمل يناير ، قم بتضمين جميع الصفوف والأعمدة.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // في حالة أوراق العمل الأخرى ،
    // استبعاد الصف الأول (الذي يحتوي على عناوين).
    else
    {
        int mdatarow = sourceSheet.getCells().getMaxDataRow(); // Zero-based
        int mdatacol = sourceSheet.getCells().getMaxDataColumn(); // Zero-based
        sourceRange = sourceSheet.getCells().createRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount -1,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }

    // ينسخ البيانات والتنسيق ورسم الأشياء وما إلى ذلك من ملف
    // نطاق المصدر إلى نطاق الوجهة.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// احفظ المصنف 
workbook.save("C:\\Files\\Summarized.xlsx");
دمج أوراق عمل متعددة في ورقة عمل واحدة باستخدام Java

دمج أوراق عمل متعددة في ورقة عمل واحدة باستخدام Java

توفر طريقة الخاصية getCells () لفئة ورقة العمل مجموعة الخلايا المتوفرة في ورقة العمل. تمثل فئة Cells من API مجموعة من الكائنات ذات الصلة بخلية ، مثل Cell ، Row ، إلخ. خاصية getMaxDisplayRange () توفر طريقة فئة الخلايا النطاق الأقصى الذي يتضمن البيانات والخلايا المدمجة والأشكال. تمثل الفئة Range نطاقًا من الخلايا داخل جدول بيانات.

توفر فئة الخلايا الطرق التالية لإنشاء نطاق من الخلايا:

  • createRange (int firstIndex، int number، boolean isVertical) طريقة لإنشاء كائن نطاق من صفوف من الخلايا أو أعمدة من الخلايا.
  • createRange (int firstRow، int firstColumn، int totalRows، int totalColumns) طريقة لإنشاء كائن نطاق من نطاق من الخلايا.
  • تقوم طريقة createRange (عنوان java.lang.String) بإنشاء كائن نطاق من عنوان النطاق.
  • تقوم طريقة createRange (java.lang.String upperLeftCell، java.lang.String lowerRightCell) بإنشاء كائن نطاق من نطاق من الخلايا.

تقوم طريقة copy () لفئة Range بنسخ جميع أنواع البيانات (بما في ذلك الصيغ) ، والتنسيق ، وكائنات الرسم ، وما إلى ذلك من نطاق المصدر إلى النطاق الوجهة.

دمج أعمدة أوراق العمل المتعددة في واحد باستخدام Java

يمكنك بسهولة دمج أعمدة من أوراق عمل متعددة في ورقة عمل واحدة برمجيًا باتباع الخطوات المذكورة أدناه:

  • قم بإنشاء مثيل لفئة Workbook لملف المصدر
  • أضف ورقة عمل جديدة باستخدام طريقة add ()
  • كرر أوراق عمل المصدر وقم بما يلي:
    • انسخ جميع الأعمدة واحدًا تلو الآخر باستخدام طريقة copyColumn () مع خلايا أوراق العمل المصدر وفهرس العمود
  • احفظ ملف الإخراج عن طريق استدعاء طريقة save () لفئة المصنف

يوضح نموذج التعليمات البرمجية التالي كيفية دمج أعمدة أوراق عمل متعددة في ورقة عمل واحدة باستخدام Java.

// افتح مصنف.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// أضف ورقة عمل باسم Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// كرر عبر أوراق العمل لنسخ الأعمدة إلى ملف
// ورقة عمل موجزة
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

for (String sheetName : nameOfSourceWorksheets) {
  Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

  if (sheetName.equals("Products")) {
    // احصل على مجموعة أعمدة ورقة العمل
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // نسخ العمود إلى ورقة التلخيص
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // احصل على مجموعة أعمدة ورقة العمل
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // نسخ العمود إلى ورقة التلخيص
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
  }
}

// احفظ ملف اكسل.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
دمج أعمدة أوراق العمل المتعددة في واحد باستخدام Java

دمج أعمدة أوراق العمل المتعددة في واحد باستخدام Java

توفر طريقة الخاصية getColumns () لفئة الخلايا مجموعة الأعمدة المتوفرة في ورقة العمل. تمثل فئة ColumnCollection مجموعة الأعمدة الفردية في ورقة العمل ، بينما تمثل فئة Column عمودًا واحدًا في ورقة العمل.

تقوم طريقة copyColumn () الخاصة بفئة الخلايا بنسخ البيانات وتنسيقات العمود بأكمله. توفر فئة الخلايا أيضًا أساليب copyColumn () المحملة بشكل زائد لنسخ البيانات باستخدام PasteOptions ورقم العمود والمصدر وأعمدة إجمالي الوجهة ، إلخ.

احصل على رخصة مجانية

يمكنك تجربة واجهة برمجة التطبيقات بدون قيود التقييم من خلال طلب ترخيص مؤقت مجاني.

استنتاج

في هذه المقالة ، تعلمت كيفية دمج ملفات Excel متعددة في ملف واحد. لقد تعلمت أيضًا كيفية الجمع بين أوراق عمل محددة لملفات Excel متعددة باستخدام Java. علاوة على ذلك ، تعلمت كيفية دمج أوراق عمل متعددة في ورقة عمل واحدة برمجيًا. توضح هذه المقالة أيضًا كيفية دمج أعمدة أوراق عمل متعددة في واحدة باستخدام Java. يمكنك معرفة المزيد حول Aspose.Cells for Java API باستخدام التوثيق. في حالة وجود أي غموض ، فلا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا