מסדי נתונים נמצאים כמעט בכל מקום כדי לאחסן ולנהל את הנתונים. זה נוהג מקובל של המתכנתים לאחזר את הנתונים מבסיסי הנתונים ולטעון אותם לתוך האפליקציות. בעת יצירת קבצי PDF באופן תכנותי, ייתכן שיהיה צורך לאכלס את המסמך בנתונים שבבסיס הנתונים. כדי להשיג זאת ביישומי NET, מאמר זה מראה כיצד להוסיף נתונים ממסד נתונים לקבצי PDF ב-C#.
- NET API להוספת נתונים ממסד נתונים ל-PDF
- הוסף נתונים ממסד נתונים ל-PDF
- הוסף נתונים ממסד נתונים ל-PDF במסגרת Entity Framework
C# .NET API להוספת נתונים ממסד נתונים ל-PDF
נשתמש ב-Aspose.PDF עבור .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";
// הגדר את צבע גבול השולחן כ- Light Grey
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) נמצא בשימוש נפוץ על ידי המפתחים. לכן, זה יהיה שימושי להרחיב את מחלקת הטבלה כדי לאכלס מסמכי 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 עבור .NET ללא מגבלות הערכה.
סיכום
במאמר זה, למדת כיצד להוסיף נתונים ממסד הנתונים לקבצי PDF ב-C#. ראית כיצד לייבא נתונים מ-DataTable לטבלה בקובץ PDF. בנוסף, כיסינו את היישום של ייבוא נתונים ל-PDF באמצעות Entity Framework. חוץ מזה, אתה יכול לחקור יותר על ה-API של C# PDF באמצעות תיעוד. במקרה שיש לך שאלות או שאילתות כלשהן, תוכל ליצור איתנו קשר דרך הפורום שלנו.