إنشاء الجداول في مستندات Word باستخدام Java

يعد Microsoft Word أحد تطبيقات معالجة النصوص الشائعة المستخدمة لإنشاء أنواع مختلفة من المستندات. قد تحتوي هذه المستندات على عدة أنواع من العناصر بما في ذلك النصوص والصور والجداول والمخططات. عندما يتعلق الأمر بأتمتة إنشاء المستندات ومعالجتها في Java، فقد تحتاج إلى حل سهل لإنشاء الجداول داخل مستندات Word. لذا، سنستكشف في منشور المدونة هذا كيفية إنشاء الجداول في مستندات Word في تطبيق Java.

مكتبة جافا لإنشاء الجداول في مستندات Word

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

يمكنك تنزيل المكتبة أو تثبيتها باستخدام تكوينات 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-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

إنشاء جدول في مستند Word في Java

هناك طريقتان لإنشاء الجداول في مستندات Word باستخدام Aspose.Words لـ Java:

  • باستخدام DocumentBuilder
  • استخدام DOM (نموذج كائن المستند)

يمكنك اختيار الطريقة التي تناسب متطلباتك. لذلك دعونا نستكشف كل من هذه الطرق بالتفصيل.

إنشاء جدول باستخدام DocumentBuilder

توفر لك فئة DocumentBuilder طريقة سريعة وسهلة لإنشاء مستندات ديناميكية من البداية أو معالجة المستندات الموجودة. فهو يوفر مجموعة من الوظائف لإدراج عناصر محتوى متنوعة مثل النص وخانات الاختيار وكائنات OLE والفقرات والقوائم والجداول والصور والمزيد.

فيما يلي الخطوات التي تستخدم فئة DocumentBuilder لإنشاء جدول في مستند Word في Java.

  • قم بإنشاء كائن من فئة المستند لتحميل أو إنشاء مستند Word.
  • قم بإنشاء كائن من فئة DocumentBuilder.
  • ابدأ جدولاً باستخدام طريقة DocumentBuilder.startTable().
  • قم بإدراج خلية باستخدام طريقة DocumentBuilder.insertCell().
  • (اختياري) قم بتطبيق التنسيق على الخلية، مثل الخط والمحاذاة.
  • قم بإدراج نص في الخلية باستخدام طريقة DocumentBuilder.write().
  • كرر إدراج الخلايا والنص في الخلايا كما هو مطلوب.
  • قم بإنهاء صف عند إكمال إدراج الخلايا باستخدام طريقة DocumentBuilder.endRow().
  • إنهاء الجدول عندما تقوم بإدراج كافة الصفوف باستخدام طريقة DocumentBuilder.endTable().
  • احفظ مستند Word باستخدام طريقة Document.save().

يوضح مقتطف التعليمات البرمجية التالي كيفية إنشاء جدول في مستند Word باستخدام Java.

// إنشاء أو تحميل المستند.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// إنشاء جدول جديد وإدراج الخلية.
Table table = builder.startTable();
builder.insertCell();

// يجب تطبيق التنسيق على مستوى الجدول بعد وجود صف واحد على الأقل في الجدول.
table.setLeftIndent(20.0);

// قم بتعيين الارتفاع وحدد قاعدة الارتفاع لصف الرأس.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// لا نحتاج إلى تحديد عرض هذه الخلية لأنها موروثة من الخلية السابقة.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// إعادة تعيين الارتفاع وتحديد قاعدة ارتفاع مختلفة لنص الجدول.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// إعادة ضبط تنسيق الخط.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// طاولة النهاية.
builder.endTable();

// حفظ المستند.
doc.save("table.docx");

فيما يلي لقطة شاشة للجدول الذي أنشأناه باستخدام نموذج التعليمات البرمجية أعلاه.

الجدول في مستند Word

إنشاء جدول باستخدام DOM

Document Object Model (DOM) هو تمثيل في الذاكرة لمستند Word يسمح لك بقراءة محتوى وتنسيق مستند Word ومعالجته وتعديله برمجيًا. توضح الخطوات التالية كيفية إنشاء جدول في مستند Word باستخدام DOM.

  • قم بإنشاء كائن من فئة المستند لتحميل أو إنشاء مستند Word.
  • قم بإنشاء كائن من فئة الجدول وأدخل الجدول في المستند باستخدام طريقة Document.getFirstSection().getBody().appendChild(Table).
  • قم بإنشاء كائن من فئة الصف وأدخله في الجدول باستخدام الأسلوب Table.appendChild(Row).
  • قم بإنشاء كائن من فئة الخلية، وقم بتعيين خيارات التنسيق، وأضف نصًا إلى الخلية.
  • قم بإدراج خلية في الصف باستخدام طريقة Row.appendChild(Cell).
  • كرر العملية لأكبر عدد تريده من الصفوف.
  • احفظ مستند Word باستخدام طريقة Document.save().

يوضح مقتطف التعليمات البرمجية التالي كيفية إنشاء جدول في مستند Word في Java.

// إنشاء أو تحميل المستند.
Document doc = new Document();
        
// نبدأ بإنشاء كائن الجدول. لاحظ أنه يجب علينا تمرير كائن المستند
// إلى منشئ كل عقدة. وذلك لأن كل عقدة نقوم بإنشائها يجب أن تنتمي
// إلى بعض الوثيقة.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// هنا يمكننا الاتصال بـ EnsureMinimum لإنشاء الصفوف والخلايا لنا. يتم استخدام هذه الطريقة
// للتأكد من صحة العقدة المحددة. في هذه الحالة، يجب أن يحتوي الجدول الصالح على صف واحد وخلية واحدة على الأقل.

// وبدلاً من ذلك، سنتولى إنشاء الصف والجدول بأنفسنا.
// ستكون هذه أفضل طريقة للقيام بذلك إذا كنا نقوم بإنشاء جدول داخل خوارزمية.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// يمكننا الآن تطبيق أي إعدادات ملائمة تلقائية.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// ثم نكرر العملية مع الخلايا والصفوف الأخرى في الجدول.
// يمكننا أيضًا تسريع الأمور عن طريق استنساخ الخلايا والصفوف الموجودة.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// حفظ المستند.
doc.save("table.docx");

إدراج جدول متداخل في مستندات Word

قد تكون هناك أيضًا حالة تحتاج فيها إلى إنشاء جدول متداخل، والذي يقع داخل خلية في الجدول الأصلي. يمكنك القيام بذلك دون المرور بعملية معقدة. أولاً، قم بإنشاء جدول أصل ثم قم باستدعاء الأسلوب DocumentBuilder.moveTo(Cell.getFirstParagraph()) لنقل عنصر التحكم داخل الخلية المطلوبة في الجدول الأصل. وبمجرد الانتهاء من ذلك، قم بإنشاء جدول جديد بنفس الطريقة.

يوضح مقتطف التعليمات البرمجية التالي كيفية إنشاء جدول متداخل في مستند Word باستخدام Java.

// إنشاء أو تحميل المستند.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// أدخل الخلية.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// هذا الاستدعاء مهم لإنشاء جدول متداخل داخل الجدول الأول. 
// بدون هذا الاستدعاء، سيتم إلحاق الخلايا المدرجة أدناه بالجدول الخارجي.
builder.endTable();

// الانتقال إلى الخلية الأولى من الجدول الخارجي.
builder.moveTo(cell.getFirstParagraph());

// بناء الجدول الداخلي.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// حفظ المستند.
doc.save("table.docx");

فيما يلي لقطة شاشة للجدول المتداخل الذي أنشأناه أعلاه.

Nested Table in a Word Document

إنشاء جدول Word من HTML في Java

يمكنك أيضًا إنشاء جدول في مستند Word باستخدام سلسلة HTML وإليك الخطوات الواجب اتباعها.

  • قم بإنشاء كائن من فئة المستند لتحميل أو إنشاء مستند Word.
  • قم بإنشاء كائن من فئة DocumentBuilder.
  • قم بإدراج سلسلة HTML من الجدول في المستند باستخدام طريقة DocumentBuilder.insertHtml(String).
  • وأخيرًا، احفظ المستند باستخدام طريقة Document.save().

يوجد أدناه مقتطف التعليمات البرمجية لإنشاء جدول Word من سلسلة HTML.

// إنشاء أو تحميل المستند.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// لاحظ أن AutoFitSettings لا ينطبق على الجداول المدرجة من HTML.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// حفظ المستند.
doc.save("table.docx");

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

يمكنك الحصول على ترخيص مؤقت لاستخدام Aspose.Words for Java دون قيود التقييم.

خاتمة

في منشور المدونة هذا، اكتشفنا كيفية إنشاء الجداول في مستندات Word باستخدام Java. لقد رأيت كيفية إنشاء جدول باستخدام منشئ المستندات أو DOM، وإنشاء جدول متداخل، وإنشاء جدول من سلسلة HTML. من خلال تثبيت المكتبة واتباع الإرشادات، يمكنك بسهولة دمج ميزة إنشاء الجدول في تطبيق Java الخاص بك.

يوفر Aspose.Words for Java العديد من الميزات وخيارات التنسيق الأخرى، مما يسمح لك بإنشاء مستندات غنية ومعقدة بسهولة. لمعرفة المزيد حول Aspose.Words for Java، استكشف [الوثائق] الشاملة5 والأمثلة. في حالة وجود أي أسئلة، لا تتردد في إعلامنا بذلك عبر [المنتدى] الخاص بنا 6.

أنظر أيضا