PlusMagi's Blog By Pitt Phunsanit C#,dotnet,technology,การจัดการข้อมูล OpenXML SDK Case: การแปลงไฟล์ Word เป็น PDF หรือการดึงข้อมูลเฉพาะส่วนออกมาเป็นไฟล์ย่อย

OpenXML SDK Case: การแปลงไฟล์ Word เป็น PDF หรือการดึงข้อมูลเฉพาะส่วนออกมาเป็นไฟล์ย่อย

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


เจาะลึกรายละเอียดและประเด็นสำคัญ

OpenXML SDK คือชุดเครื่องมือที่ช่วยให้นักพัฒนาสามารถเข้าถึงโครงสร้าง XML ภายในของไฟล์ Office Open XML (เช่น DOCX) ได้โดยตรง แทนที่จะพึ่งพาการเปิดผ่านโปรแกรม Word ทั่วไป การใช้ SDK นี้ทำให้เราสามารถจัดการกับองค์ประกอบระดับลึก เช่น ย่อหน้า (Paragraphs), ตาราง (Tables), รูปภาพ, และส่วนหัว/ท้ายกระดาษได้อย่างแม่นยำ ทำให้เกิดความสามารถในการอ่านและเขียนเอกสารในระดับโค้ด

เมื่อพูดถึงการแปลงไฟล์เป็น PDF หรือการสกัดข้อมูลเฉพาะส่วน (Data Extraction) ความท้าทายที่แท้จริงคือการรักษา “ความหมาย” ของเนื้อหา ไม่ใช่แค่ข้อความ การดึงข้อมูลจึงต้องอาศัยการระบุตำแหน่งตามโครงสร้าง เช่น “ให้เอาข้อความจากย่อหน้าที่อยู่ในตารางที่ 3 และมีคลาสเป็น ‘Summary'” ซึ่ง OpenXML SDK ช่วยให้เราสามารถเขียน Logic เหล่านี้ได้อย่างทรงพลัง ก่อนที่จะส่งต่อข้อมูลเหล่านั้นไปยังบริการภายนอกเพื่อแปลงหรือจัดเก็บต่อไป

using DocumentFormat.OpenXml;
// ... (โค้ดส่วนอื่น ๆ)

public void ExtractSpecificData(string filePath)
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filePath, true))
    {
        MainDocumentPart mainPart = wordDoc.CoreElements.FirstOrDefault() as MainDocumentPart;
        if (mainPart != null && mainPart.Document == null) return;

        Body body = mainPart.Document.Body;
        // ตัวอย่างการวนลูปเพื่อดึงข้อมูลจากทุกย่อหน้า
        foreach (Paragraph p in body.Descendants())
        {
            string text = string.Join(" ", p.Runs.Select(r => r.InnerText));
            Console.WriteLine($"Extracted Text: {text}"); 
            // Logic เพิ่มเติม: ตรวจสอบแท็กหรือรูปแบบเพื่อตัดสินใจว่าข้อมูลนี้คือส่วนที่ต้องการหรือไม่
        }
    }
}

การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • ระบบ Onboarding และสัญญาอัตโนมัติ: แทนที่จะให้พนักงานกรอกข้อมูลในเอกสาร Word ซ้ำ ๆ ระบบสามารถใช้ OpenXML SDK เพื่อสร้างเทมเพลตสัญญาที่สมบูรณ์แบบ โดยการแทนที่ Placeholder (เช่น [ชื่อลูกค้า], [วันที่]) ด้วยข้อมูลจากฐานข้อมูลโดยตรง ทำให้ลดข้อผิดพลาดและประหยัดเวลาได้อย่างมาก
  • การทำ Compliance และ Archiving ข้อมูล: ในองค์กรที่ต้องเก็บเอกสารทางกฎหมายจำนวนมาก การสกัดข้อมูลเฉพาะส่วน เช่น วันที่ลงนาม, ชื่อคู่สัญญา, หรือเลขที่อ้างอิง ออกมาเป็น JSON หรือ XML เพื่อจัดเก็บบนระบบคลังเอกสาร (DMS) จะช่วยให้การค้นหาและตรวจสอบย้อนหลังทำได้อย่างรวดเร็วและแม่นยำ

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


อ่านเพิ่มเติม