تطبيق نمط الجدول

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

Aspose.Words يدعم تطبيق نمط الجدول إلى جدول وأيضا قراءة خصائص أي نمط الجدول. يتم الحفاظ على أنماط الجدول أثناء التحميل والحفظ بالطرق التالية:

  • يتم الاحتفاظ بأنماط الجدول بتنسيقات DOCX ووردمل عند التحميل والحفظ لهذه التنسيقات
  • يتم الحفاظ على أنماط الجدول عند التحميل والحفظ بتنسيق DOC (ولكن ليس بأي تنسيق آخر)
  • عند التصدير إلى تنسيقات أو عرض أو طباعة أخرى، يتم توسيع أنماط الجدول لتوجيه التنسيق في الجدول، بحيث يتم الاحتفاظ بجميع التنسيقات

إنشاء نمط الجدول

يمكن للمستخدم إنشاء نمط جديد وإضافته إلى مجموعة الأنماط. يتم استخدام طريقة Add لإنشاء نمط جدول جديد.

يوضح مثال التعليمات البرمجية التالية كيفية إنشاء نمط جدول تعريف مستخدم جديد:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Name");
builder->InsertCell();
builder->Write(u"Value");
builder->EndRow();
builder->InsertCell();
builder->InsertCell();
builder->EndTable();
auto tableStyle = System::ExplicitCast<TableStyle>(doc->get_Styles()->Add(StyleType::Table, u"MyTableStyle1"));
tableStyle->get_Borders()->set_LineStyle(LineStyle::Double);
tableStyle->get_Borders()->set_LineWidth(1);
tableStyle->set_LeftPadding(18);
tableStyle->set_RightPadding(18);
tableStyle->set_TopPadding(12);
tableStyle->set_BottomPadding(12);
table->set_Style(tableStyle);
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.CreateTableStyle.docx");

انسخ نمط جدول موجود

إذا لزم الأمر، يمكنك نسخ نمط جدول موجود بالفعل في مستند معين إلى مجموعة الأنماط الخاصة بك باستخدام طريقة AddCopy.

من المهم معرفة أنه مع هذا النسخ، يتم أيضا نسخ الأنماط المرتبطة.

يوضح مثال التعليمات البرمجية التالية كيفية استيراد نمط من مستند إلى مستند آخر:

EXAMPLE

تطبيق نمط جدول موجود

Aspose.Words يوفر TableStyle الموروثة من فئة Style. TableStyle يسهل المستخدم لتطبيق خيارات نمط مختلفة مثل التظليل، الحشو، المسافة البادئة، CellSpacing و Font، الخ.

بالإضافة إلى ذلك، يوفر Aspose.Words فئة StyleCollection وبعض خصائص فئة Table لتحديد نمط الجدول الذي سنعمل معه: Style, StyleIdentifier, StyleName, و StyleOptions.

Aspose.Words يوفر أيضا فئة ConditionalStyle التي تمثل تنسيقا خاصا يتم تطبيقه على بعض مناطق الجدول بنمط جدول معين، و ConditionalStyleCollection التي تمثل مجموعة من ConditionalStyle الكائنات. تحتوي هذه المجموعة على مجموعة دائمة من العناصر التي تمثل عنصرا واحدا لكل قيمة من نوع التعداد ConditionalStyleType. ال ConditionalStyleType يحدد التعداد جميع مناطق الجدول الممكنة التي يمكن تعريف التنسيق الشرطي عليها بأسلوب جدول.

في هذه الحالة، يمكن تعريف التنسيق الشرطي لكل منطقة جدول ممكنة محددة تحت ConditionalStyleType نوع التعداد.

يوضح مثال التعليمات البرمجية التالية كيفية تعريف التنسيق الشرطي لصف رأس الجدول:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Name");
builder->InsertCell();
builder->Write(u"Value");
builder->EndRow();
builder->InsertCell();
builder->InsertCell();
builder->EndTable();
auto tableStyle = System::ExplicitCast<TableStyle>(doc->get_Styles()->Add(StyleType::Table, u"MyTableStyle1"));
tableStyle->get_ConditionalStyles()->get_FirstRow()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_GreenYellow());
tableStyle->get_ConditionalStyles()->get_FirstRow()->get_Shading()->set_Texture(TextureIndex::TextureNone);
table->set_Style(tableStyle);
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.DefineConditionalFormatting.docx");

يمكنك أيضا اختيار أجزاء الجدول التي تريد تطبيق الأنماط عليها، مثل العمود الأول والعمود الأخير والصفوف ذات النطاقات. يتم سردها في TableStyleOptions التعداد ويتم تطبيقها من خلال StyleOptions خاصية. ال TableStyleOptions يسمح التعداد بمزيج من هذه الميزات.

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
SharedPtr<Table> table = builder->StartTable();
// We must insert at least one row first before setting any table formatting.
builder->InsertCell();
// Set the table style used based on the unique style identifier.
table->set_StyleIdentifier(StyleIdentifier::MediumShading1Accent1);
// Apply which features should be formatted by the style.
table->set_StyleOptions(TableStyleOptions::FirstColumn | TableStyleOptions::RowBands | TableStyleOptions::FirstRow);
table->AutoFit(AutoFitBehavior::AutoFitToContents);
builder->Writeln(u"Item");
builder->get_CellFormat()->set_RightPadding(40);
builder->InsertCell();
builder->Writeln(u"Quantity (kg)");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Apples");
builder->InsertCell();
builder->Writeln(u"20");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Bananas");
builder->InsertCell();
builder->Writeln(u"40");
builder->EndRow();
builder->InsertCell();
builder->Writeln(u"Carrots");
builder->InsertCell();
builder->Writeln(u"50");
builder->EndRow();
doc->Save(ArtifactsDir + u"WorkingWithTableStylesAndFormatting.BuildTableWithStyle.docx");

تظهر الصور أدناه تمثيلا لـ Table Styles في Microsoft Word وخصائصها المقابلة في Aspose.Words.

formatting-table-style-aspose-words-cpp

خذ التنسيق من نمط الجدول وقم بتطبيقه كتنسيق مباشر

يوفر Aspose.Words أيضا طريقة ExpandTableStylesToDirectFormatting لأخذ التنسيق الموجود على نمط جدول وتوسيعه على صفوف وخلايا الجدول كتنسيق مباشر. حاول دمج التنسيق مع نمط الجدول ونمط الخلية.

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
// Get the first cell of the first table in the document.
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
SharedPtr<Cell> firstCell = table->get_FirstRow()->get_FirstCell();
// First print the color of the cell shading.
// This should be empty as the current shading is stored in the table style.
System::Drawing::Color cellShadingBefore = firstCell->get_CellFormat()->get_Shading()->get_BackgroundPatternColor();
std::cout << (String(u"Cell shading before style expansion: ") + cellShadingBefore) << std::endl;
doc->ExpandTableStylesToDirectFormatting();
// Now print the cell shading after expanding table styles.
// A blue background pattern color should have been applied from the table style.
System::Drawing::Color cellShadingAfter = firstCell->get_CellFormat()->get_Shading()->get_BackgroundPatternColor();
std::cout << (String(u"Cell shading after style expansion: ") + cellShadingAfter) << std::endl;