ผสานเซลล์ตาราง

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

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

ใน Aspose.Words เซลล์ที่ผสานจะแสดงด้วยคุณสมบัติของคลาส CellFormat ต่อไปนี้:

  • HorizontalMerge ซึ่งอธิบายว่าเซลล์เป็นส่วนหนึ่งของการผสานเซลล์ในแนวนอนหรือไม่
  • VerticalMerge ซึ่งอธิบายว่าเซลล์เป็นส่วนหนึ่งของการผสานเซลล์ในแนวตั้งหรือไม่

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

  • เซลล์แรกในลำดับของเซลล์ที่ผสานจะมี CellMerge.First
  • เซลล์ที่รวมเข้าด้วยกันในเวลาต่อมาจะมี CellMerge.Previous
  • เซลล์ที่ไม่ถูกผสานจะมี CellMerge.None

ตรวจสอบว่าเซลล์ถูกผสานหรือไม่

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

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

ผสานเซลล์ตารางเมื่อใช้ DocumentBuilder

หากต้องการผสานเซลล์ในตารางที่สร้างด้วย DocumentBuilder คุณต้องตั้งค่าประเภทการผสานที่เหมาะสมสำหรับเซลล์แต่ละเซลล์ที่คาดว่าจะมีการผสาน - CellMerge.First แรกแล้วตามด้วย CellMerge.Previous

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

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

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

รวมเซลล์ตารางในกรณีอื่นๆ

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

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

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

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

เซลล์ที่ผสานแนวตั้งและแนวนอนในตาราง HTML

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

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

แปลงเป็นเซลล์ที่ผสานในแนวนอน

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

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