الجداول مفيدة لتنظيم المعلومات والأشكال. غالبًا ما ندرج الجداول في مستندات الكلمات (DOCX / DOC) لإظهار المعلومات. في تطبيق معالجة الكلمات ، يمكنك بسهولة إنشاء جداول باستخدام C++. يمكنك الاطلاع على الأمثلة التالية لتعلم استخدام الجداول في مستندات Word:

دعنا ننتقل لاستكشاف كل هذه الموضوعات بالتفصيل:

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

أولاً ، يرجى ملاحظة أنك ستستخدم واجهة برمجة تطبيقات Aspose.Words for C++ لإدراج جداول في مستند Word. يمكنك تكوين واجهة برمجة التطبيقات عن طريق تنزيلها من الإصدارات الجديدة أو عبر معرض NuGet. بمجرد التهيئة بشكل صحيح ، يمكنك ببساطة استخدام الأساليب والخصائص والفئات التي تعرضها واجهة برمجة التطبيقات بحيث يمكن استخدام بعض استدعاءات API البسيطة لإنشاء مستندات Microsoft Word أو تحريرها أو معالجتها ، مثل ملفات DOCX أو DOC.

قم بإدراج جدول في مستندات Word باستخدام C++

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

  1. تهيئة كائن من فئة المستند
  2. قم بإنشاء كائن جدول
  3. أضف الجدول إلى المستند
  4. قم بإنشاء صفوف وأعمدة
  5. تطبيق AutoFit على خلايا الجدول
  6. احفظ مستند Word الناتج

يوضح مقتطف الشفرة أدناه كيفية إدراج جدول في مستند Word (DOCX / DOC) باستخدام C++:

// المسار إلى دليل المستندات.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// نبدأ بإنشاء كائن الجدول. لاحظ كيف يجب علينا تمرير كائن المستند
// إلى منشئ كل عقدة. هذا لأن كل عقدة نقوم بإنشائها يجب أن تنتمي
// لبعض الوثائق.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// أضف الجدول إلى المستند.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// هنا يمكننا أن نطلق على "ضمان الحد الأدنى" لإنشاء الصفوف والخلايا لنا. تستخدم هذه الطريقة
// للتأكد من أن العقدة المحددة صالحة ، في هذه الحالة يجب أن يحتوي الجدول الصالح على واحد على الأقل
// صف وخلية واحدة ، لذلك هذه الطريقة تخلقهما لنا.
// بدلاً من ذلك ، سنتعامل مع إنشاء الصف والجدول بأنفسنا. ستكون هذه أفضل طريقة للقيام بذلك
// إذا كنا نصنع طاولة داخل algorthim على سبيل المثال.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

// يمكننا الآن تطبيق أي إعدادات احتواء تلقائي.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);

// قم بإنشاء خلية وإضافتها إلى الصف
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);

// أضف فقرة إلى الخلية بالإضافة إلى تشغيل جديد مع بعض النص.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

// أضف الخلية إلى الصف.
row->AppendChild(cell);

// ثم نكرر العملية للخلايا والصفوف الأخرى في الجدول.
// يمكننا أيضًا تسريع الأمور عن طريق استنساخ الخلايا والصفوف الموجودة.
row->AppendChild((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";

// احفظ المستند على القرص.
doc->Save(outputPath);

إدراج جدول من HTML في مستندات Word باستخدام C++

من المحتمل أن يحتوي ملف HTML على جدول تحتاج إلى إدراجه في مستندات Word الخاصة بك مثل DOCX و DOC وما إلى ذلك. أو قد تحتاج إلى نسخ جدول من موقع ويب. لذلك بدلاً من إنشاء الجدول وتصميمه من البداية ، يمكنك بسهولة تحليل ترميز HTML كجدول في مستند Word. على سبيل المثال ، يمكنك إضافة جدول إلى مستند Word باستخدام سلسلة HTML التالية:

<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>

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

دعنا نتبع الخطوات أدناه لإدراج جدول HTML في مستند Word:

  1. تهيئة مثيل لفئة Document
  2. قم بتمرير ترميز HTML باستخدام طريقة InsertHtml
  3. حفظ ملف DOCX الناتج

تتبع التعليمات البرمجية أدناه هذه الخطوات وتوضح كيفية إنشاء جدول في مستند Word باستخدام HTML باستخدام C++:

// المسار إلى دليل المستندات.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

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

System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// احفظ المستند على القرص.
doc->Save(outputPath);

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

ادراج جدول في Word

إدراج جدول باستخدام Document Builder في C++

أفضل شيء في Aspose.Words for C++ API هو أنه يقدم مجموعة متنوعة من الميزات التي تصبح ميزة تنافسية لواجهة برمجة التطبيقات وتجعلها تبرز من بين الخيارات الأخرى. وبالمثل ، فإن ميزة جدول الإدراج باستخدام أداة إنشاء المستندات هي طريقة أخرى لإضافة الجداول في مستندات Word (DOC / DOCX).لذلك دعونا نستكشف التفاصيل من ثلاث وجهات نظر مختلفة:

1) إدراج جدول بسيط في DOCX باستخدام Document Builder باستخدام C++

لإضافة جدول بسيط في مستند Word باستخدام مُنشئ المستندات ، تحتاج إلى اتباع الخطوات التالية:

  1. إنشاء مستند كائن
  2. استدعاء طريقة StartTable() وإدراج الخلايا
  3. أضف الصف والخلايا
  4. حفظ ملف DOCX الناتج

علاوة على ذلك ، يوضح مقتطف الشفرة أدناه كيفية إدراج جدول بسيط في ملف DOCX باستخدام C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// نسمي هذه الطريقة لبدء بناء الجدول.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// قم ببناء الخلية الثانية
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// اتصل بالطريقة التالية لإنهاء الصف وبدء صف جديد.
builder->EndRow();

// قم ببناء الخلية الأولى من الصف الثاني.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// قم ببناء الخلية الثانية.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// إشارة إلى أننا انتهينا من بناء الطاولة.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// احفظ المستند على القرص.
doc->Save(outputPath);

2) قم بإدراج جدول منسق في DOCX باستخدام Document Builder باستخدام C++

يمكنك إدراج جدول منسق في مستند Word بالخطوات التالية:

  1. تهيئة مثيل لفئة Document
  2. جعل صف الرأس
  3. تعيين المسافات البادئة والميزات للتنسيق
  4. إعادة تعيين تنسيق الخط
  5. احفظ ملف Word DOCX الناتج

ينشئ مقتطف الكود أدناه جدولًا منسقًا في ملف DOCX باستخدام C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();

// اصنع صف الرأس.
builder->InsertCell();

// اضبط المسافة البادئة اليسرى للجدول. يجب تطبيق التنسيق الواسع للجدول بعد
// يوجد صف واحد على الأقل في الجدول.
table->set_LeftIndent(20.0);

// عيّن الارتفاع وحدد قاعدة الارتفاع لصف الرأس.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// بعض الميزات الخاصة لصف الرأس.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Header Row,\n Cell 1");

// لا نحتاج إلى تحديد عرض هذه الخلية لأنها موروثة من الخلية السابقة.
builder->InsertCell();
builder->Write(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();

// تعيين ميزات للصفوف والخلايا الأخرى.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);

// إعادة تعيين الارتفاع وتحديد قاعدة ارتفاع مختلفة لجسم الجدول
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// إعادة تعيين تنسيق الخط.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// بناء الخلايا الأخرى.
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";

// احفظ المستند على القرص.
doc->Save(outputPath);

3) قم بإدراج جدول متداخل في DOCX باستخدام Document Builder باستخدام C++

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

  1. أنشئ [جدول] خارجيًا 13 ثم قم باستدعاء طريقة EndTable
  2. بناء جدول داخلي داخل خلية من الجدول الخارجي
  3. حفظ وثيقة كلمة الإخراج

يوضح مقتطف التعليمات البرمجية التالي كيفية إدراج جدول متداخل في مستند Word باستخدام C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// بناء الجدول الخارجي.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

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

// الانتقال إلى الخلية الأولى من الجدول الخارجي.
builder->MoveTo(cell->get_FirstParagraph());

// بناء الجدول الداخلي.
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";

// احفظ المستند على القرص.
doc->Save(outputPath);

استنتاج

باختصار ، لقد تعلمنا كيفية إدراج جداول مختلفة في مستندات Word باستخدام أساليب مختلفة. يمكنك إدراج جدول بسيط أو بسلسلة HTML بالإضافة إلى الجداول المنسقة والمتداخلة في مستندات الكلمات (DOC / DOCX).ومع ذلك ، في حالة وجود أي لبس أو استفسار ، يمكنك التواصل معنا على منتديات الدعم المجاني. علاوة على ذلك ، يمكنك أيضًا الرجوع إلى مراجع API و وثائق المنتج كمرجع لك.

أنظر أيضا