แทรก DataTable ลงในเอกสาร Word ใน C#

ในฐานะนักพัฒนา .NET คุณต้องจัดการกับวัตถุ DataTable บ่อยมาก โดยเฉพาะอย่างยิ่ง เมื่อคุณต้องการนำเข้าหรือส่งออกข้อมูลจากฐานข้อมูลหรือไฟล์ XML/JSON ในขณะที่สร้างเอกสารโดยทางโปรแกรม คุณอาจต้องแทรกข้อมูลจากวัตถุ DataTable ลงในตารางในเอกสาร Word โดยตรง สำหรับกรณีดังกล่าว ผมขอเสนอวิธีแก้ปัญหาที่สมบูรณ์แบบและง่ายที่สุดสำหรับการแทรกข้อมูลจาก DataTable ลงในเอกสาร Word ใน C#

ไลบรารี C # เพื่อแทรก DataTable ใน Word DOC - ดาวน์โหลดฟรี

ในการนำเข้าข้อมูลจากวัตถุ DataTable ไปยังเอกสาร Word เราจะใช้ Aspose.Words for .NET เป็นห้องสมุดที่มีคุณลักษณะหลากหลายซึ่งช่วยให้คุณสร้างและประมวลผลเอกสาร MS Word คุณสามารถดาวน์โหลด DLL หรือติดตั้งได้จาก NuGet

ดาวน์โหลด DLL

ติดตั้งผ่าน NuGet

PM> Install-Package Aspose.Words

C# แทรก DataTable ลงในเอกสาร Word - ขั้นตอน

ต่อไปนี้เป็นขั้นตอนที่เราจะทำตามเพื่อดึงข้อมูลจาก DataTable และแทรกลงในเอกสาร Word

  • โหลดข้อมูลจากฐานข้อมูลหรือไฟล์ข้อมูลลงในวัตถุ DataTable
  • สร้างเอกสาร Word ใหม่และเพิ่มตารางใหม่เข้าไป
  • วนซ้ำแถวใน DataTable และแทรกแต่ละแถวในตารางของ Word

และนั่นแหล่ะ

มาดูวิธีแปลงขั้นตอนเหล่านี้เป็นรหัส C# และนำเข้า DataTable ลงในเอกสาร Word

แทรกข้อมูลจาก DataTable ลงใน Word DOC ใน C#

ขั้นแรก เราจะเขียนเมธอดที่ยอมรับ DocumentBuilder เพื่อสร้างเอกสาร DataTable ที่มีข้อมูล และพารามิเตอร์เพิ่มเติมเพื่อเปิด/ปิดการนำเข้าส่วนหัวของคอลัมน์ นอกจากนี้ยังส่งกลับวัตถุตาราง

ต่อไปนี้คือขั้นตอนการทำงานของวิธีนี้

  • สร้างตารางใหม่และรับข้อมูลอ้างอิงไปยังวัตถุ ตาราง
  • แทรกคอลัมน์ลงในตารางตามคอลัมน์ใน DataTable
  • ตั้งค่าน้ำหนักแบบอักษรหากแถวแรกเป็นส่วนหัว
  • วนซ้ำแต่ละ DataRow ในคอลเลกชัน DataTable.Rows
  • แทรกเซลล์ใหม่สำหรับแต่ละค่าและตั้งค่าประเภทข้อมูลตามนั้น
  • กลับวัตถุตาราง

ต่อไปนี้เป็นการนำวิธีการนำเข้าข้อมูลจาก DataTable เข้าสู่ตารางในเอกสาร Word ใน C#

///<summary>
/// นำเข้าเนื้อหาจาก DataTable ที่ระบุไปยังวัตถุตาราง Aspose.Words ใหม่ 
/// ตารางจะถูกแทรกที่ตำแหน่งปัจจุบันของตัวสร้างเอกสารและใช้การจัดรูปแบบของตัวสร้างปัจจุบันหากมีการกำหนดไว้
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // ตรวจสอบว่าจะรวมชื่อของคอลัมน์จากแหล่งข้อมูลไว้ในแถวส่วนหัวหรือไม่
    if (importColumnHeadings)
    {
        // เก็บค่าดั้งเดิมของคุณสมบัติเหล่านี้ก่อนที่จะเปลี่ยนแปลง
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // จัดรูปแบบแถวหัวเรื่องด้วยคุณสมบัติที่เหมาะสม
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // สร้างแถวใหม่และใส่ชื่อของแต่ละคอลัมน์ในแถวแรกของตาราง
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // คืนค่าการจัดรูปแบบเดิม
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // แทรกเซลล์ใหม่สำหรับแต่ละวัตถุ
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // กำหนดรูปแบบที่กำหนดเองสำหรับวันที่และเวลา
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // ตามค่าเริ่มต้น รายการอื่น ๆ จะถูกแทรกเป็นข้อความ
                    builder.Write(item.ToString());
                    break;
            }

        }

        // หลังจากที่เราแทรกข้อมูลทั้งหมดจากระเบียนปัจจุบันแล้ว เราสามารถสิ้นสุดแถวของตารางได้
        builder.EndRow();
    }

    // เราใส่ข้อมูลทั้งหมดจาก DataTable เสร็จแล้ว เราสามารถจบตารางได้
    builder.EndTable();

    return table;
}

ตอนนี้ ได้เวลาเรียกใช้เมธอดนี้แล้วแทรก DataTable ลงในเอกสาร Word

นำเข้า DataTable ลงในเอกสาร Word ใน C#

ต่อไปนี้เป็นขั้นตอนในการนำเข้าข้อมูลจาก DataTable ไปยังเอกสาร Word ใน C#

  • สร้างเอกสาร Word ใหม่ (หรือโหลดเอกสารที่มีอยู่แล้ว) โดยใช้คลาส Document
  • อ่านข้อมูลจากฐานข้อมูล/ไฟล์ไปยังวัตถุ DataTable
  • เรียกใช้เมธอดที่เราเขียนในหัวข้อที่แล้วและรับตารางกลับมา
  • กำหนดรูปแบบของตาราง
  • บันทึกไฟล์ Word โดยใช้วิธี Document.Save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแทรก DataTable ลงในเอกสาร Word ใน C#

// สร้างเอกสารใหม่
Document doc = new Document();

// เราสามารถวางตำแหน่งที่เราต้องการแทรกตารางและระบุรูปแบบพิเศษที่ต้องการได้
// นำไปใช้บนโต๊ะด้วย
DocumentBuilder builder = new DocumentBuilder(doc);

// เราต้องการหมุนแนวนอนของหน้าตามที่เราคาดหวังตารางกว้าง
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// ดึงข้อมูลจากแหล่งข้อมูลของเราซึ่งจัดเก็บเป็น DataTable
DataTable dataTable = ds.Tables[0];

// สร้างตารางในเอกสารจากข้อมูลที่มีอยู่ใน DataTable
Table table = ImportTableFromDataTable(builder, dataTable, true);

// เราสามารถใช้สไตล์ตารางเป็นวิธีที่รวดเร็วมากในการปรับใช้การจัดรูปแบบกับทั้งตาราง
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// สำหรับตารางของเรา เราต้องการลบส่วนหัวของคอลัมน์รูปภาพ
table.FirstRow.LastCell.RemoveAllChildren();

// บันทึกเอกสารผลลัพธ์
doc.Save("Table.docx");

C# DataTable ไปยัง Word Importer Library - รับใบอนุญาตฟรี

คุณสามารถรับ ใบอนุญาตชั่วคราวฟรี เพื่อใช้ Aspose.Words for .NET โดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีการแทรกข้อมูลจาก DataTable ลงในเอกสาร Word ใน C# คุณสามารถรวมตัวอย่างโค้ดเข้ากับแอปพลิเคชันของคุณและนำเข้าข้อมูลโดยตรงจากฐานข้อมูล/XML/JSON ลงในเอกสาร Word โดยใช้ DataTable

.NET Word Library - อ่านเพิ่มเติม

คุณสามารถเยี่ยมชมเอกสารประกอบของ Aspose.Words for .NET เพื่อสำรวจเพิ่มเติมเกี่ยวกับไลบรารี ในกรณีที่คุณมีคำถามใดๆ โปรดแจ้งให้เราทราบผ่านทาง ฟอรัม ของเรา

ดูสิ่งนี้ด้วย