PlusMagi's Blog By Pitt Phunsanit Backend,Business,Technical Development,Technology OpenXML SDK Case: การสร้างย่อหน้า (Paragraph) การจัดรูปแบบตัวอักษร (Bold, Italic, Color) และ Font

OpenXML SDK Case: การสร้างย่อหน้า (Paragraph) การจัดรูปแบบตัวอักษร (Bold, Italic, Color) และ Font

ในยุคที่การสื่อสารทางธุรกิจต้องอาศัยเอกสารรูปแบบ Word (DOCX) อย่างต่อเนื่อง การสร้างเอกสารที่ไม่ได้มีเพียงแค่ข้อความ แต่ต้องมีการจัดรูปแบบที่ซับซ้อน เช่น ตัวหนา ตัวเอียง การเน้นสี หรือการกำหนดชนิดฟอนต์ที่แตกต่างกันในแต่ละส่วน เป็นความท้าทายหลักของนักพัฒนาซอฟต์แวร์

ความท้าทายนี้ต้องการเครื่องมือที่มีความแม่นยำสูงในการควบคุมโครงสร้างภายในของไฟล์ DOCX ซึ่ง OpenXML SDK คือคำตอบที่ทรงพลังที่สุดในการจัดการโครงสร้างระดับ XML ของไฟล์ Word โดยตรง

หลักการทำงาน: จากฐานข้อมูลสู่การจัดรูปแบบระดับ Run

หัวใจสำคัญของการทำความเข้าใจ OpenXML SDK คือการรู้ว่าการจัดรูปแบบใน Word ไม่ได้ถูกกำหนดที่ระดับย่อหน้า (Paragraph) แต่ถูกกำหนดที่ระดับ Run (กลุ่มของข้อความที่มีการจัดรูปแบบเดียวกัน) การทำงานจึงต้องเป็นแบบแยกส่วน (Segmented) เสมอ

ในระบบสถาปัตยกรรมที่ทันสมัย ข้อมูลข้อความที่ใช้ในการสร้างเอกสารมักจะถูกดึงมาจากระบบฐานข้อมูล (เช่น PostgreSQL) ซึ่งเราจะใช้ PostgreSQL ในการดึงข้อมูลดิบที่ถูกจัดโครงสร้างมา จากนั้นจึงส่งข้อมูลเหล่านี้เข้าสู่ OpenXML SDK เพื่อทำการจัดรูปแบบตามที่ต้องการ

ขั้นตอนการผสานข้อมูล (Data Integration Flow)

  1. Data Retrieval (PostgreSQL): ดึงข้อมูลที่จำเป็นจากตารางต่างๆ โดยข้อมูลแต่ละฟิลด์จะถูกกำหนดให้มีรูปแบบการจัดวางที่แตกต่างกัน
  2. Processing (Application Logic): โค้ดส่วน Backend จะรับข้อมูลที่ถูกจัดโครงสร้างแล้ว (เช่น ชื่อลูกค้า, รายการสินค้า)
  3. Document Generation (OpenXML SDK): ใช้ OpenXML SDK สร้าง Paragraph และ Run ต่างๆ โดยกำหนดคุณสมบัติ (Properties) เช่น Font Family, Size, Bold, Italic, และ Color ให้กับแต่ละ Run อย่างแม่นยำ

ตัวอย่างการดึงข้อมูลที่ถูกจัดโครงสร้างจาก PostgreSQL เพื่อนำไปใช้ในเอกสาร:

SQL

-- ดึงข้อมูลที่ประกอบด้วยข้อความหลายส่วนที่มีรูปแบบต่างกัน
SELECT
    'รายงานประจำเดือน' AS title_text,
    'Apple' AS bold_data,
    'Banana' AS italic_data,
    'Orange' AS colored_data
FROM
    report_data
WHERE
    report_id = 1;

เมื่อได้รับข้อมูลชุดนี้แล้ว OpenXML SDK จะทำการวนลูป (Loop) เพื่อสร้าง Run ใหม่สำหรับแต่ละค่า (เช่น Run สำหรับ ‘Apple’ จะถูกกำหนดให้เป็น Bold, Run สำหรับ ‘Orange’ จะถูกกำหนดให้เป็นสีแดง) ทำให้สามารถสร้างเอกสารที่มีความซับซ้อนและเป็นมืออาชีพได้

บทสรุป: ความแม่นยำในการสร้างเอกสาร

การใช้ OpenXML SDK ร่วมกับการดึงข้อมูลจากระบบฐานข้อมูลอย่าง PostgreSQL ทำให้เราสามารถแยกส่วนของการจัดเก็บข้อมูล (Data Layer) ออกจากการนำเสนอข้อมูล (Presentation Layer) ได้อย่างสมบูรณ์แบบ นักพัฒนาจึงสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจและการจัดรูปแบบที่ซับซ้อนได้ โดยไม่ต้องกังวลว่าข้อมูลจะถูกจัดรูปแบบอย่างไรใน Word เพียงแค่กำหนดว่าข้อมูลชิ้นไหนต้องเป็นตัวหนาหรือสีใดเท่านั้น