วัน: 5 มกราคม 2023

คู่มือ Built-in Table Style ID ใน Microsoft Word: มาตรฐานชื่อสไตล์และการนำไปใช้งานข้ามไลบรารีคู่มือ Built-in Table Style ID ใน Microsoft Word: มาตรฐานชื่อสไตล์และการนำไปใช้งานข้ามไลบรารี

เมื่อต้องเขียนโปรแกรมเพื่อสร้างเอกสาร Word (.docx) อัตโนมัติด้วยไลบรารีต่าง ๆ เช่น Open XML SDK, python-docx, Apache POI หรือไลบรารีระดับองค์กรอย่าง Aspose.Words สิ่งที่มักทำให้นักพัฒนาสะดุดบ่อยที่สุดคือ “ชื่อเรียกของสไตล์ตารางสำเร็จรูป (Built-in Table Styles)” เนื่องจากชื่อที่มองเห็นบนหน้าจอโปรแกรม Microsoft Word กับรหัสภายในที่ใช้สั่งงานในระดับโค้ดนั้นไม่ได้เหมือนกันเสียทีเดียว

บทความนี้จะพาไปเจาะลึกความสัมพันธ์ระหว่าง Display Name และ OpenXML Style ID พร้อมแนวทางการเรียกใช้งาน และแหล่งข้อมูลอ้างอิงสำหรับนำไปต่อยอด


Display Name vs Style ID: ทำไมถึงไม่เหมือนกัน?

ในสถาปัตยกรรม Office Open XML (ECMA-376) เอกสารจะแยกส่วนการแสดงผลออกจากตัวระบุข้อมูล

  • UI Display Name (ชื่อที่แสดงบน Ribbon)
    เป็นชื่อที่ถูกแปลตามภาษาของระบบ (Localized) เช่น ภาษาอังกฤษคือ Grid Table 4 - Accent 1 หรือในภาษาไทยคือ ตารางเส้นตาราง 4 - เน้น 1
  • Built-in Style ID (รหัสโปรแกรมมิ่ง)
    เป็นค่าคงที่ตามสเปกสากล ไม่มีเว้นวรรค และคำนึงถึงตัวพิมพ์เล็ก-ใหญ่ (Case-Sensitive) เช่น GridTable4-Accent1 ซึ่งโปรแกรม Microsoft Word ทุกเวอร์ชันทั่วโลกจะใช้ ID นี้เหมือนกันทั้งหมด

ตารางเทียบเคียง Built-in Table Style ยอดนิยม

ตารางสรุปการจับคู่ระหว่างชื่อบนหน้าจอ (Display Name) กับ Style ID จริงที่ส่งในแท็ก <w:tblStyle w:val="..."/>:

หมวดหมู่Display Name (UI / python-docx)OpenXML Style ID (C# / Open XML SDK)โทน Accent ที่รองรับ
PlainTable GridTableGridไม่มี (ขาว/ดำ)
PlainPlain Table 1 – 5PlainTable1 ถึง PlainTable5ไม่มี
Grid (Light)Grid Table 1 LightGridTable1LightBase + Accent 1–6
Grid (Light)Light ShadingLightShading-Accent1Accent 1–6
Grid (Medium)Grid Table 2GridTable2-Accent1Accent 1–6
Grid (Medium)Grid Table 4GridTable4-Accent1Accent 1–6
Grid (Dark)Grid Table 6 ColorfulGridTable6Colorful-Accent1Accent 1–6
List (Light)List Table 1 LightListTable1Light-Accent1Base + Accent 1–6
List (Medium)List Table 3ListTable3-Accent1Accent 1–6
List (Dark)List Table 7 ColorfulListTable7Colorful-Accent1Accent 1–6

รูปแบบการเรียกใช้งานในแต่ละภาษาและไลบรารี

C# (Open XML SDK)

ใน Open XML SDK จะรับค่าเป็น StringValue จึงต้องส่ง Style ID ตัวจริงที่ไม่มีเว้นวรรค

// กำหนด Style ID โดยตรง
table.AppendChild(new TableProperties(
    new TableStyle() { Val = "GridTable4-Accent1" },
    new TableLook() { Val = "04A0", FirstRow = true, NoHorizontalBand = false }
));

Python (python-docx)

ไลบรารี python-docx ออกแบบมาให้ใช้ง่าย โดยอนุญาตให้ส่ง Display Name แบบภาษาอังกฤษ (มีเว้นวรรค) ได้โดยตรง เนื่องจากตัวไลบรารีมีดิกชันนารีแปลงชื่ออยู่เบื้องหลัง

# ส่งชื่อแบบ Display Name ได้ทันที
table = doc.add_table(rows=3, cols=3)
table.style = 'Grid Table 4 Accent 1'
# หรือเรียกใช้ Core Style
table.style = 'Table Grid'

Enterprise SDK (Aspose.Words / Syncfusion)

ไลบรารีเชิงพาณิชย์มักจะเตรียม Enum สำเร็จรูปมาให้ เพื่อป้องกันข้อผิดพลาดจากการพิมพ์ String พลาด (Typo)

// ตัวอย่างของ Aspose.Words
table.StyleIdentifier = TableStyleIdentifier.GridTable4Accent1;

// ตัวอย่างของ Syncfusion DocIO
table.ApplyStyle(BuiltinTableStyle.GridTable4Accent1);

ข้อมูลอ้างอิงสำหรับศึกษาต่อ (References)

สำหรับผู้ที่ต้องการดูนิยามโครงสร้างสเปก XML และรายการสไตล์ทั้งหมด สามารถศึกษาเพิ่มเติมได้จากแหล่งข้อมูลหลักดังนี้:

  • มาตรฐานสากล ECMA-376 (Office Open XML File Formats)
    เอกสารสเปกข้อกำหนดทางการในส่วน Part 1: Fundamentals and Markup Language Reference (หัวข้อย่อย 17.7.4 Table Styles และ 17.7.4.4 tblStyle)
  • Microsoft Learn – WdBuiltinStyle Enumeration
    เอกสารอ้างอิงค่า Enum สำหรับนักพัฒนา Office VBA / VSTO ครอบคลุมชุดรหัสสไตล์ทั้งหมดที่ฝังอยู่ในตัว Microsoft Word
  • DocumentFormat.OpenXml API Documentation
    คู่มือคลาส TableStyle และ TableLook ของไลบรารี Open XML SDK อย่างเป็นทางการจาก Microsoft
  • python-docx Documentation (Understanding Styles)
    คู่มือโครงสร้างการจัดการสไตล์ตารางและตารางจับคู่ชื่อ Built-in Style ในระบบนิเวศของภาษา Python