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