ตารางมีประโยชน์ในการจัดระเบียบข้อมูลและตัวเลข เรามักจะแทรกตารางในเอกสาร word (DOCX/DOC) เพื่อแสดงข้อมูล ในแอปพลิเคชันประมวลผลคำ คุณสามารถสร้างตารางโดยใช้ C++ ได้อย่างง่ายดาย คุณสามารถอ่านตัวอย่างต่อไปนี้เพื่อเรียนรู้การทำงานกับตารางในเอกสาร Word:

ให้เราดำเนินการต่อไปเพื่อสำรวจรายละเอียดหัวข้อเหล่านี้ทั้งหมด:

แทรกตารางใน Word Documents API

ประการแรก โปรดทราบว่าคุณจะใช้ Aspose.Words for C++ API เพื่อแทรกตารางในเอกสารคำ คุณสามารถกำหนดค่า API ได้โดยดาวน์โหลดจาก New Releases หรือผ่านแกลเลอรี NuGet เมื่อกำหนดค่าอย่างถูกต้องแล้ว คุณสามารถใช้เมธอด คุณสมบัติ และคลาสที่เปิดเผยโดย API เพื่อให้สามารถใช้การเรียก API ง่ายๆ สองสามรายการเพื่อสร้าง แก้ไข หรือจัดการเอกสาร Microsoft Word เช่น ไฟล์ DOCX หรือ DOC

แทรกตารางในเอกสาร Word โดยใช้ C++

คุณสามารถแทรกตารางในเอกสาร Word ด้วยขั้นตอนง่ายๆ ไม่กี่ขั้นตอน อย่างไรก็ตาม สิ่งสำคัญคือต้องทราบที่นี่ว่าคุณต้องส่งวัตถุเอกสารไปยังตัวสร้างของแต่ละโหนด เพื่อให้โหนดย่อยทั้งหมดเป็นของวัตถุเดียวกัน คุณต้องทำตามขั้นตอนด้านล่าง:

  1. เริ่มต้นวัตถุของคลาส Document
  2. สร้างวัตถุ ตาราง
  3. เพิ่มตารางลงในเอกสาร
  4. สร้างแถวและคอลัมน์
  5. ใช้ ปรับพอดีอัตโนมัติ กับเซลล์ตาราง
  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);

// ที่นี่เราสามารถเรียก SureMinimum เพื่อสร้างแถวและเซลล์ให้เราได้ วิธีการนี้ใช้
// เพื่อให้แน่ใจว่าโหนดที่ระบุถูกต้อง ในกรณีนี้ ตารางที่ถูกต้องควรมีอย่างน้อยหนึ่งรายการ
// แถวและหนึ่งเซลล์ ดังนั้น วิธีนี้จึงสร้างพวกมันขึ้นมาให้เรา
// แต่เราจะจัดการสร้างแถวและตารางเอง นี่จะเป็นวิธีที่ดีที่สุดในการทำเช่นนี้
// ตัวอย่างเช่น ถ้าเราสร้างตารางภายในอัลกอริทึม
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 โดยใช้สตริง 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);

คุณจะสังเกตได้ว่าวิธีนี้ง่ายกว่าวิธีที่เราได้สำรวจไว้ด้านบนเล็กน้อย เหตุผลที่คุณไม่จำเป็นต้องเพิ่มแต่ละโหนดทีละโหนดสำหรับแถว คอลัมน์ หรือเซลล์ เนื่องจากแท็ก Table ในสตริง HTML มีข้อมูลทั้งหมด ต่อไปนี้เป็นภาพหน้าจอของตาราง HTML อย่างง่ายที่เพิ่มลงในเอกสาร Word:

แทรกตารางใน Word

แทรกตารางโดยใช้ตัวสร้างเอกสารใน C++

สิ่งที่ดีที่สุดเกี่ยวกับ Aspose.Words for C++ API คือมีคุณสมบัติที่หลากหลายซึ่งกลายเป็นข้อได้เปรียบในการแข่งขันสำหรับ API และทำให้โดดเด่นกว่าตัวเลือกอื่นๆ ในทำนองเดียวกัน คุณลักษณะของการแทรกตารางโดยใช้ตัวสร้างเอกสารเป็นอีกวิธีหนึ่งในการเพิ่มตารางในเอกสารคำ (DOC/DOCX) ให้เราสำรวจรายละเอียดจากสามมุมมองที่แตกต่างกัน:

1) แทรก Simple Table ใน DOCX ด้วย Document Builder โดยใช้ C++

สำหรับการเพิ่มตารางอย่างง่ายในเอกสารคำด้วยตัวสร้างเอกสาร คุณต้องทำตามขั้นตอนด้านล่าง:

  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. สร้างภายนอก Table แล้วเรียกใช้เมธอด 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 References และ Product Documentation สำหรับข้อมูลอ้างอิงของคุณ

ดูสิ่งนี้ด้วย