تصدير بيانات Excel لملء نموذج PDF

تفاصيل التنفيذ

في السيناريو التالي، سنقوم باستخدام نموذج PDF يحتوي على ثلاثة حقول نموذجية تحمل الأسماء ID، Name و Gender.

todo:image_alt_text

في النموذج المحدد أعلاه، يحتوي على صفحة واحدة، مع ثلاثة حقول مسماة “ID”، “Name” و “Gender” بالتتابع. سنقوم باستخراج البيانات من ورقة إكسل التالية إلى كائن DataTable.

todo:image_alt_text

نحتاج إلى إنشاء كائن من فئة AutoFiller وربط نموذج Pdf الموجود في الصور أعلاه واستخدام طريقة ImportDataTable لملء حقول النموذج باستخدام البيانات الموجودة في كائن DataTable. بمجرد استدعاء الطريقة يتم إنشاء ملف نموذج Pdf جديد، يحتوي على خمس صفحات يتم ملؤها بناءً على البيانات من ورقة Excel. كان نموذج Pdf المدخل صفحة واحدة والنتيجة هي خمس صفحات، لأن عدد صفوف البيانات في ورقة Excel هو 5. توفر فئة DataTable القدرة على استخدام الصف الأول من الورقة كاسم عمود.

todo:image_alt_text todo:image_alt_text
todo:image_alt_text todo:image_alt_text
Workbook workbook = new Workbook();
// Creating a file stream containing the Excel file to be opened
FileStream fstream = new FileStream("d:\\pdftest\\newBook1.xls", FileMode.Open);
// Opening the Excel file through the file stream
workbook.Open(fstream);
// Accessing the first worksheet in the Excel file
Worksheet worksheet = workbook.Worksheets[0];
// Exporting the contents of 7 rows and 2 columns starting from 1st cell to DataTable
DataTable dataTable = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxRow + 1, worksheet.Cells.MaxColumn + 1, true);
// Closing the file stream to free all resources
fstream.Close();
// Create an object of AutoFiller class
AutoFiller autoFiller = new AutoFiller();
// The input pdf file that contains form fields
autoFiller.InputFileName = "d:\\pdftest\\DataTableExample.pdf";
// The resultant pdf, that will contain the form fields filled with information from DataTable
autoFiller.OutputFileName = "D:\\pdftest\\DataTableExample_Filled.pdf";
// Call the method to import the data from DataTable object into Pdf form fields.
autoFiller.ImportDataTable(dataTable);
// Call the save method to generate the pdf file
autoFiller.Save();

للملء من XLSX يُرجى استخدام مقطع الكود التالي:

```csharp
internal static void FillFromXLSX()
        {
            // إنشاء كائن من فئة AutoFiller
            AutoFiller autoFiller = new AutoFiller();
            // ملف pdf المدخل الذي يحتوي على حقول النموذج
            autoFiller.BindPdf(@"C:\Samples\Facades\Autofiller\Sample-Form-01.pdf");

            DataTable dataTable = GenerateDataTable();

            // استدعاء الطريقة لاستيراد البيانات من كائن DataTable إلى حقول النموذج في Pdf.
            autoFiller.ImportDataTable(dataTable);

            // ملف pdf الناتج، الذي سيحتوي على حقول النموذج المملوءة بالمعلومات من DataTable
            autoFiller.Save(@"C:\Samples\Facades\Autofiller\Sample-Form-01_mod.pdf");

        }

Aspose.PDF لـ .NET يسمح لك بإنشاء جدول بيانات في مستند PDF:

private static DataTable GenerateDataTable()
        {
            string[] names = new[] { "Olivia", "Oliver", "Amelia", "George", "Isla", "Harry", "Ava", "Noah" };
            // إنشاء جدول بيانات جديد.
            System.Data.DataTable table = new DataTable("Students");
            // إعلان المتغيرات لكائنات DataColumn و DataRow.
            DataColumn column;
            DataRow row;

            // إنشاء DataColumn جديد، تعيين DataType،
            // ColumnName وإضافته إلى DataTable.
            column = new DataColumn
            {
                DataType = System.Type.GetType("System.Int32"),
                ColumnName = "id",
                ReadOnly = true,
                Unique = true
            };
            // إضافة العمود إلى مجموعة DataColumnCollection.
            table.Columns.Add(column);

            // إنشاء العمود الثاني.
            column = new DataColumn
            {
                DataType = System.Type.GetType("System.String"),
                ColumnName = "First Name",
                AutoIncrement = false,
                Caption = "First Name",
                ReadOnly = false,
                Unique = false
            };
            // إضافة العمود إلى الجدول.
            table.Columns.Add(column);

            // جعل عمود ID هو العمود الأساسي.
            DataColumn[] PrimaryKeyColumns = new DataColumn[1];
            PrimaryKeyColumns[0] = table.Columns["id"];
            table.PrimaryKey = PrimaryKeyColumns;

            // إنشاء ثلاثة كائنات DataRow جديدة وإضافتها
            // إلى DataTable
            var rand = new Random();
            for (int i = 1; i <= 4; i++)
            {
                row = table.NewRow();
                row["id"] = i;
                row["First Name"] = names[rand.Next(names.Length)];
                table.Rows.Add(row);
            }
            return table;
        }

الخاتمة