ฐานข้อมูลมีอยู่เกือบทุกที่ในการจัดเก็บและจัดการข้อมูล เป็นเรื่องปกติของโปรแกรมเมอร์ในการดึงข้อมูลจากฐานข้อมูลและโหลดลงในแอปพลิเคชัน เมื่อสร้างไฟล์ PDF โดยทางโปรแกรม เราอาจจำเป็นต้องเติมเอกสารด้วยข้อมูลในฐานข้อมูล เพื่อให้สำเร็จในแอปพลิเคชัน .NET บทความนี้แสดงวิธีเพิ่มข้อมูลจากฐานข้อมูลไปยังไฟล์ PDF ใน C#
- .NET API เพื่อเพิ่มข้อมูลจากฐานข้อมูลเป็น PDF
- เพิ่มข้อมูลจากฐานข้อมูลเป็น PDF
- เพิ่มข้อมูลจากฐานข้อมูลเป็น PDF ใน Entity Framework
C# .NET API เพื่อเพิ่มข้อมูลจากฐานข้อมูลเป็น PDF
เราจะใช้ Aspose.PDF for .NET เพื่อเพิ่มข้อมูลจากฐานข้อมูลไปยังไฟล์ PDF เป็น API การสร้างและการจัดการ PDF ที่ได้รับความนิยมซึ่งช่วยให้คุณสร้างไฟล์ PDF ที่มีเลย์เอาต์ที่เรียบง่ายและซับซ้อนได้อย่างราบรื่น คุณสามารถ ดาวน์โหลด ไบนารีของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.PDF
เพิ่มข้อมูลจากฐานข้อมูลเป็น PDF ใน C#
ในกรณีส่วนใหญ่ ข้อมูลจะถูกดึงจากตารางฐานข้อมูลไปยัง DataTable หรือ DataView ดังนั้น สำหรับการสาธิต เราจะใช้ DataTable เพื่อเพิ่มข้อมูลลงในไฟล์ PDF เพื่อให้ทุกอย่างง่ายขึ้น เราจะสร้างและเติมข้อมูลใน DataTable โดยทางโปรแกรมโดยไม่ต้องใช้ฐานข้อมูล ต่อไปนี้เป็นขั้นตอนในการเพิ่มข้อมูลไปยังไฟล์ PDF จากฐานข้อมูลใน C#
- โหลดข้อมูลลงใน DataTable จากฐานข้อมูล
- สร้าง PDF ใหม่หรือโหลดไฟล์ที่มีอยู่โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส Table และตั้งค่าคุณสมบัติ เช่น ความกว้างของคอลัมน์ เส้นขอบ เป็นต้น
- นำเข้าข้อมูลจากฐานข้อมูลไปยังตาราง PDF โดยใช้วิธี Table.ImportDataTable()
- เพิ่มตารางไปยังหน้าโดยใช้เมธอด Document.Pages[index].Paragraphs.Add(Table)
- บันทึกไฟล์ PDF โดยใช้วิธี Document.Save(string)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการนำเข้าข้อมูลจากฐานข้อมูลไปยัง PDF ใน C#
// รับข้อมูลจากฐานข้อมูลไปยัง DataTable
DataTable dt = new DataTable("Employee");
dt.Columns.Add("Employee_ID", typeof(Int32));
dt.Columns.Add("Employee_Name", typeof(string));
dt.Columns.Add("Gender", typeof(string));
// เพิ่ม 2 แถวลงในวัตถุ DataTable โดยทางโปรแกรม
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "John Smith";
dr[2] = "Male";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "Mary Miller";
dr[2] = "Female";
dt.Rows.Add(dr);
// สร้างตัวอย่างเอกสาร
Document doc = new Document();
doc.Pages.Add();
// เริ่มต้นอินสแตนซ์ใหม่ของตาราง
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
// กำหนดความกว้างคอลัมน์ของตาราง
table.ColumnWidths = "40 100 100 100";
// กำหนดสีขอบตารางเป็น LightGray
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// กำหนดเส้นขอบให้กับเซลล์ตาราง
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// นำเข้าข้อมูล
table.ImportDataTable(dt, true, 0, 1, 3, 3);
// เพิ่มวัตถุตารางไปที่หน้าแรกของเอกสารอินพุต
doc.Pages[1].Paragraphs.Add(table);
// บันทึกเอกสารที่อัปเดตซึ่งมีวัตถุตาราง
doc.Save("output.pdf");
ต่อไปนี้เป็นผลลัพธ์ของตัวอย่างโค้ดด้านบน
เพิ่มข้อมูลจากฐานข้อมูลเป็น PDF ใน Entity Framework
ทุกวันนี้ Entity Framework (EF) เป็นที่นิยมใช้โดยนักพัฒนา ดังนั้นจึงเป็นการสะดวกที่จะขยายคลาส Table เพื่อเติมเอกสาร PDF ด้วยรายการหรือข้อมูลที่จัดกลุ่มใน EF ต่อไปนี้เป็นการนำวิธีการเติมตาราง PDF โดยใช้รายการและข้อมูลที่จัดกลุ่ม ในทั้งสองวิธี ตารางและข้อมูลจะถูกส่งผ่านเป็นอาร์กิวเมนต์ของวิธีการ
public static class PdfHelper
{
public static void ImportEntityList<TSource>(this Pdf.Table table, IList<TSource> data)
{
var headRow = table.Rows.Add();
var props = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);
}
foreach (var item in data)
{
// เพิ่มแถวในตาราง
var row = table.Rows.Add();
// เพิ่มเซลล์ตาราง
foreach (var t in props)
{
var dataItem = t.GetValue(item, null);
if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
switch (dataType.DataType)
{
case DataType.Currency:
row.Cells.Add(string.Format("{0:C}", dataItem));
break;
case DataType.Date:
var dateTime = (DateTime)dataItem;
if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
{
row.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
? dateTime.ToShortDateString()
: string.Format(df.DataFormatString, dateTime));
}
break;
default:
row.Cells.Add(dataItem.ToString());
break;
}
else
{
row.Cells.Add(dataItem.ToString());
}
}
}
}
public static void ImportGroupedData<TKey,TValue>(this Pdf.Table table, IEnumerable<Models.GroupViewModel<TKey, TValue>> groupedData)
{
var headRow = table.Rows.Add();
var props = typeof(TValue).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
headRow.Cells.Add(prop.GetCustomAttribute(typeof(DisplayAttribute)) is DisplayAttribute dd ? dd.Name : prop.Name);
}
foreach (var group in groupedData)
{
// เพิ่มแถวกลุ่มลงในตาราง
var row = table.Rows.Add();
var cell = row.Cells.Add(group.Key.ToString());
cell.ColSpan = props.Length;
cell.BackgroundColor = Pdf.Color.DarkGray;
cell.DefaultCellTextState.ForegroundColor = Pdf.Color.White;
foreach (var item in group.Values)
{
// เพิ่มแถวข้อมูลลงในตาราง
var dataRow = table.Rows.Add();
// เพิ่มเซลล์
foreach (var t in props)
{
var dataItem = t.GetValue(item, null);
if (t.GetCustomAttribute(typeof(DataTypeAttribute)) is DataTypeAttribute dataType)
switch (dataType.DataType)
{
case DataType.Currency:
dataRow.Cells.Add(string.Format("{0:C}", dataItem));
break;
case DataType.Date:
var dateTime = (DateTime)dataItem;
if (t.GetCustomAttribute(typeof(DisplayFormatAttribute)) is DisplayFormatAttribute df)
{
dataRow.Cells.Add(string.IsNullOrEmpty(df.DataFormatString)
? dateTime.ToShortDateString()
: string.Format(df.DataFormatString, dateTime));
}
break;
default:
dataRow.Cells.Add(dataItem.ToString());
break;
}
else
{
dataRow.Cells.Add(dataItem.ToString());
}
}
}
}
}
}
public class GroupViewModel<K,T>
{
public K Key;
public IEnumerable<T> Values;
}
รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อใช้ Aspose.PDF for .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีเพิ่มข้อมูลจากฐานข้อมูลลงในไฟล์ PDF ใน C# คุณได้เห็นวิธีการนำเข้าข้อมูลจาก DataTable ไปยังตารางในไฟล์ PDF นอกจากนี้ เรายังกล่าวถึงการดำเนินการนำเข้าข้อมูลไปยัง PDF โดยใช้ Entity Framework นอกจากนี้ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ C# PDF API โดยใช้ เอกสารประกอบ ในกรณีที่คุณมีคำถามหรือข้อสงสัย คุณสามารถติดต่อเราผ่านทาง ฟอรัม