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