---
title: "ผสานเซลล์ตารางในC++"
---


บางครั้งบางแถวในตารางต้องมีหัวข้อหรือบล็อกขนาดใหญ่ของข้อความที่ใช้ความกว้างเต็ม สำหรับการออกแบบที่เหมาะสมของตารางผู้ใช้สามารถผสานเซลล์ตารางหลายเป็นหนึ่ง Aspose.Wordsรองรับการรวมเซลล์เมื่อทำงานกับรูปแบบการป้อนข้อมูลทั้งหมดรวมทั้งการนำเข้าHTMLเนื้อหา.

## วิธีการผสานเซลล์ตาราง

ในAspose.Wordsเซลล์ที่ผสานจะถูกแสดงโดยคุณสมบัติต่อไปนี้ของ[CellFormat](https://reference.aspose.com/words/cpp/aspose.words.tables/cellformat/)คลาส:

- [HorizontalMerge](https://reference.aspose.com/words/cpp/aspose.words.tables/cellformat/get_horizontalmerge/)ซึ่งอธิบายว่าเซลล์เป็นส่วนหนึ่งของการรวมแนวนอนของเซลล์
- [VerticalMerge](https://reference.aspose.com/words/cpp/aspose.words.tables/cellformat/get_verticalmerge/)ซึ่งอธิบายว่าเซลล์เป็นส่วนหนึ่งของการรวมแนวตั้งของเซลล์

ค่าของคุณสมบัติเหล่านี้กำหนดพฤติกรรมผสานของเซลล์:

- เซลล์แรกในลำดับของเซลล์ที่ผสานจะมี[CellMerge.First](https://reference.aspose.com/words/cpp/aspose.words.tables/cellmerge/)
- เซลล์ที่ผสานในภายหลังจะมี[CellMerge.Previous](https://reference.aspose.com/words/cpp/aspose.words.tables/cellmerge/)
- เซลล์ที่ไม่รวมจะมี[CellMerge.None](https://reference.aspose.com/words/cpp/aspose.words.tables/cellmerge/)

{{% alert color="primary" %}}

บางครั้งเมื่อโหลดเซลล์เอกสารที่มีอยู่ในตารางพวกเขาจะปรากฏรวม อย่างไรก็ตามมันอาจเป็นเซลล์ยาวหนึ่งเซลล์-บางครั้งMicrosoft Wordส่งออกเซลล์ที่ผสานด้วยวิธีนี้ นเมื่อพยายามที่จะทำงานกับแต่ละเซลล์,แต่มีไม่ได้ดูเหมือนจะเป็นรูปแบบใดๆโดยเฉพาะอย่.

{{% /alert %}}

## ตรวจสอบว่ามีการรวมเซลล์หรือไม่

หากต้องการตรวจสอบว่าเซลล์เป็นส่วนหนึ่งของลำดับของเซลล์ที่ผสาน,เราเพียงแค่ตรวจสอบ**HorizontalMerge**และ**VerticalMerge**คุณสมบัติ.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการพิมพ์ชนิดผสานเซลล์แนวนอนและแนวตั้ง:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "check-cells-merged.h" >}}

## ผสานเซลล์ในตาราง{#merge-cells-in-a-table}

เมื่อต้องการผสานเซลล์ในตารางที่สร้างขึ้นด้วย[DocumentBuilder](https://reference.aspose.com/words/cpp/aspose.words/documentbuilder/)คุณต้องตั้งค่าประเภทการผสานที่เหมาะสมสำหรับแต่ละเซลล์ที่คาดว่าการผสาน-ก่อน**CellMerge.First**และจากนั้น**CellMerge.Previous**.

นอกจากนี้คุณต้องจำไว้ว่าให้ล้างการตั้งค่าผสานสำหรับเซลล์เหล่านั้นที่ไม่จำเป็นต้องผสานซึ่งสามารถทำได้โดยการตั้งค่าเซลล์ที่ไม่รวมเป็น**CellMerge.None** ล์ทั้งหมดในตารางจะถูกผสาน.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการสร้างตารางที่มีสองแถวที่เซลล์ในแถวแรกถูกรวมในแนวน:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "horizontal-merge.h" >}}

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการสร้างตารางสองคอลัมน์ที่เซลล์ในคอลัมน์แรกจะรวมในแน:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "vertical-merge.h" >}}

## ผสานเซลล์ตารางในกรณีอื่นๆ

ในสถานการณ์อื่นๆที่ไม่ได้ใช้**DocumentBuilder**เช่นในตารางที่มีอยู่การรวมเซลล์ในลักษณะก่อนหน้านี้อาจไม่ง่า แต่เราสามารถห่อการดำเนินงานขั้นพื้นฐานที่เกี่ยวข้องกับการใช้คุณสมบัติผสานกับเซลล์ในวิธีการที่ทำให้งานง่ายขึ้นมาก วิธีการนี้จะคล้ายกับวิธีการผสานอัตโนมัติซึ่งเรียกว่าการผสานช่วงของเซลล์ในตาราง.

รหัสด้านล่างจะรวมเซลล์ตารางในช่วงที่ระบุ,เริ่มต้นที่เซลล์ที่กำหนดและสิ้นสุดที่เซลล์สิ้นสุด. ในกรณีนี้ช่วงสามารถสแปนหลายแถวหรือคอลัมน์:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "merge-cells.h" >}}

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการผสานช่วงของเซลล์ระหว่างสองเซลล์ที่ระบุ:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "merge-cell-range.h" >}}

ขึ้นอยู่กับรุ่นของกรอบการทำงานที่คุณกำลังใช้,คุณอาจต้องการที่จะปรับแต่งวิธีการนี้โดยก ในกรณีนี้คุณสามารถเรียกวิธีนี้โดยตรงบนเซลล์เพื่อรวมช่วงของเซลล์เช่น`cell1.Merge(cell2)`.

## เซลล์รวมในแนวตั้งและแนวนอนในตาราง{#vertical-and-Horizontal-merged-cells-in-the-table}

ดังที่เราได้กล่าวในบทความก่อนหน้านี้ตารางในMicrosoft Wordคือชุดของแถวที่เป็นอิสระ แต่ละแถวมีชุดของเซลล์ที่เป็นอิสระจากเซลล์ของแถวอื่นๆ ดังนั้นในตารางMicrosoft Wordไม่มีวัตถุดังกล่าวเป็น"คอลัมน์"และ"1คอลัมน์เซนต์"เป็นสิ่งที่ต้องการ"ชุดของ1เซลล์เซนต์ของแต่ละแถวในตาราง" นี้จะช่วยให้ผู้ใช้มีตารางที่ยกตัวอย่างเช่นแถว1เซนต์ประกอบด้วยสองเซลล์-2ซม.และ1ซม.และแถวที่2ประกอบด้วยสองเซลล์ที่แตกต่างกัน-1ซม.และกว้าง2ซม. และAspose.Wordsสนับสนุนแนวคิดของตารางนี้.

ตารางในHTMLมีโครงสร้างที่แตกต่างกันเป็นหลัก:แต่ละแถวมีหมายเลขเดียวกันของเซลล์และ(มั ดังนั้นถ้า**HorizontalMerge**และ**VerticalMerge**ส่งคืนค่าไม่ถูกต้องให้ใช้ตัวอย่างรหัสต่อไปนี้:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "print-horizontal-and-vertical-merged.h" >}}

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "horizontal-and-vertical-merge-helper-classes.h" >}}

## แปลงเป็นเซลล์ที่ผสานในแนวนอน{#convert-to-horizontally-merged-cells}

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

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการข้างต้นในการดำเนินงาน:

{{< gist "aspose-words-gists" "03b0c69804cda6427adc3f12cc6ba2d3" "convert-to-horizontally-merged-cells.h" >}}
