טבלאות מועילות לארגון מידע ודמויות. לעתים קרובות אנו מוסיפים טבלאות במסמכי Word (DOCX/DOC) כדי להציג מידע. ביישום עיבוד תמלילים, אתה יכול בקלות ליצור טבלאות באמצעות C++. אתה יכול לעבור על הדוגמאות הבאות כדי ללמוד עבודה עם טבלאות במסמכי Word:
- הוסף טבלאות ב-Word Documents API
- הוסף טבלה במסמכי Word באמצעות C++
- הכנס טבלה מ-HTML במסמכי Word באמצעות C++
- הוסף טבלה ב-DOCX באמצעות בונה מסמכים ב-C++
הבה נעבור לחקור את כל הנושאים הללו בפירוט:
הוסף טבלאות ב-Word Documents API
ראשית, שים לב שאתה תשתמש ב-Aspose.Words for C++ API כדי להוסיף טבלאות במסמך Word. אתה יכול להגדיר את ה-API על ידי הורדתו מ-מהדורות חדשות או דרך הגלריה NuGet. לאחר התצורה הנכונה, אתה יכול פשוט להשתמש בשיטות, במאפיינים ובמחלקות שנחשפו על ידי ה-API כך שניתן להשתמש בכמה קריאות API פשוטות ליצירה, עריכה או מניפולציה של מסמכי Microsoft Word, כמו קובצי DOCX או DOC.
הוסף טבלה במסמכי Word באמצעות C++
אתה יכול להוסיף טבלה במסמכי Word בכמה שלבים פשוטים. עם זאת, חשוב לציין כאן כי עליך להעביר את אובייקט המסמך לבנאי של כל צומת כך שכל הצמתים הצאצאים שייכים לאותו אובייקט. עליך לבצע את השלבים המפורטים להלן:
- אתחול האובייקט של מחלקה מסמך
- צור אובייקט טבלה
- הוסף את הטבלה למסמך
- צור שורות ועמודות
- החל התאמה אוטומטית על תאי טבלה
- שמור פלט מסמך 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);
// כאן נוכל לקרוא ל-EnsureMinimum כדי ליצור עבורנו את השורות והתאים. נעשה שימוש בשיטה זו
// כדי להבטיח שהצומת שצוין חוקי, במקרה זה לטבלה חוקית צריכה להיות לפחות אחת
// שורה ותא אחד, לכן השיטה הזו יוצרת אותם עבורנו.
// במקום זאת נטפל בעצמנו ביצירת השורה והטבלה. זו תהיה הדרך הטובה ביותר לעשות זאת
// אם היינו יוצרים טבלה בתוך אלגורתים למשל.
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:
- אתחול מופע של מחלקה מסמך
- העבר את סימון HTML בשיטת InsertHtml
- שמור פלט DOCX word קובץ
הקוד שלהלן מבצע את השלבים הבאים ומראה כיצד ליצור טבלה במסמך 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);
אתה יכול לשים לב ששיטה זו היא קצת יותר פשוטה מהגישה שבדקנו לעיל. הסיבה היא, אינך צריך להוסיף כל צומת אחד אחד עבור השורות, העמודות או התאים מכיוון שתג ה-Table במחרוזת ה-HTML מכיל את כל המידע. להלן צילום מסך של טבלת HTML פשוטה זו שנוספה למסמך Word:
הוסף טבלה באמצעות בונה מסמכים ב-C++
הדבר הטוב ביותר ב-Aspose.Words for C++ API הוא שהוא מציע מגוון תכונות שהופכות ליתרון תחרותי עבור ה-API והופכות אותו לבלוט בין האפשרויות האחרות. באופן דומה, התכונה של טבלת ההוספה באמצעות בונה מסמכים היא גישה נוספת של הוספת טבלאות במסמכי וורד (DOC/DOCX). אז הבה נחקור את הפרטים משלוש נקודות מבט שונות:
1) הוסף טבלה פשוטה ב-DOCX עם בונה מסמכים באמצעות C++
להוספת טבלה פשוטה במסמך Word עם בונה המסמכים, עליך לבצע את השלבים הבאים:
- צור מסמך אובייקט
- התקשר לשיטת StartTable() והוסף תאים
- הוסף את השורה והתאים
- שמור קובץ 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 עם בונה מסמכים באמצעות C++
ניתן להוסיף טבלה מעוצבת למסמך Word באמצעות השלבים הבאים:
- אתחול מופע של מחלקה מסמך
- צור שורת כותרת
- הגדר כניסות ותכונות עבור העיצוב
- אפס את עיצוב הגופן
- שמור את קובץ הפלט 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 עם בונה מסמכים באמצעות C++
לפעמים אנחנו צריכים שולחן נוסף בתוך שולחן קיים. לדוגמה, תא בשורה או עמודה כלשהי של טבלה יכול להכיל תת-טבלה עבור תת-קטגוריה או שדה אחר. בתרחישים כאלה, טבלאות מקוננות מועילות, אותן ניתן להוסיף על ידי ביצוע השלבים הבאים:
- בנה טבלה חיצונית ולאחר מכן קרא לשיטת EndTable
- בנה טבלה פנימית בתוך תא של טבלה חיצונית
- שמור פלט מסמך Word
קטע הקוד הבא מראה כיצד להוסיף טבלה מקוננת במסמך 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);
סיכום
לסיכום, למדנו כיצד להוסיף טבלאות שונות במסמכי וורד באמצעות גישות שונות. אתה יכול להכניס טבלה פשוטה או עם מחרוזת HTML כמו גם את הטבלאות המעוצבות והמקוננות למסמכי word (DOC/DOCX). עם זאת, בכל מקרה של בלבול או שאילתה, אתה יכול לפנות אלינו בפורומי תמיכה בחינם. יתר על כן, אתה יכול גם לעיין בAPI References ו-Product Documentation לעיונך האדיב.