Exporter les données Excel pour remplir le formulaire PDF
Détails de l’implémentation
Dans le scénario suivant, nous allons utiliser un formulaire PDF, qui contient trois champs de formulaire nommés ID, Nom et Sexe.
Dans le formulaire spécifié ci-dessus, il y a une page, avec trois champs nommés respectivement “ID”, “Nom” et “Sexe”. Nous extrairons les données de la feuille Excel suivante dans l’objet DataTable.
Nous devons créer un objet de la classe AutoFiller et lier le formulaire PDF présent dans les images ci-dessus et utiliser la méthode ImportDataTable pour remplir les champs du formulaire en utilisant les données présentes dans l’objet DataTable.Une fois la méthode appelée, un nouveau fichier de formulaire Pdf est généré, qui contient cinq pages avec le formulaire rempli basé sur les données de la feuille Excel. Le formulaire Pdf d’entrée était d’une seule page et le résultat est de cinq pages, parce que le nombre de lignes de données dans la feuille Excel est de 5. La classe DataTable offre la capacité d’utiliser la première ligne de la feuille comme ColumnName.
Workbook workbook = new Workbook();
// Création d'un flux de fichiers contenant le fichier Excel à ouvrir
FileStream fstream = new FileStream("d:\\pdftest\\newBook1.xls", FileMode.Open);
// Ouverture du fichier Excel via le flux de fichiers
workbook.Open(fstream);
// Accès à la première feuille de calcul dans le fichier Excel
Worksheet worksheet = workbook.Worksheets[0];
// Exportation du contenu de 7 lignes et 2 colonnes à partir de la 1ère cellule vers DataTable
DataTable dataTable = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxRow + 1, worksheet.Cells.MaxColumn + 1, true);
// Fermeture du flux de fichiers pour libérer toutes les ressources
fstream.Close();
// Créer un objet de la classe AutoFiller
AutoFiller autoFiller = new AutoFiller();
// Le fichier pdf d'entrée qui contient les champs de formulaire
autoFiller.InputFileName = "d:\\pdftest\\DataTableExample.pdf";
// Le pdf résultant, qui contiendra les champs de formulaire remplis avec les informations de DataTable
autoFiller.OutputFileName = "D:\\pdftest\\DataTableExample_Filled.pdf";
// Appeler la méthode pour importer les données de l'objet DataTable dans les champs de formulaire Pdf.
autoFiller.ImportDataTable(dataTable);
// Appeler la méthode de sauvegarde pour générer le fichier pdf
autoFiller.Save();
Pour remplir depuis XLSX, veuillez utiliser l’extrait de code suivant :
internal static void FillFromXLSX()
{
// Créer un objet de la classe AutoFiller
AutoFiller autoFiller = new AutoFiller();
// Le fichier PDF d'entrée qui contient les champs de formulaire
autoFiller.BindPdf(@"C:\Samples\Facades\Autofiller\Sample-Form-01.pdf");
DataTable dataTable = GenerateDataTable();
// Appeler la méthode pour importer les données de l'objet DataTable dans les champs de formulaire PDF.
autoFiller.ImportDataTable(dataTable);
// Le PDF résultant, qui contiendra les champs de formulaire remplis avec les informations de DataTable
autoFiller.Save(@"C:\Samples\Facades\Autofiller\Sample-Form-01_mod.pdf");
}
Aspose.PDF pour .NET vous permet de générer une table de données dans un document PDF :
private static DataTable GenerateDataTable()
{
string[] names = new[] { "Olivia", "Oliver", "Amelia", "George", "Isla", "Harry", "Ava", "Noah" };
// Créer un nouveau DataTable.
System.Data.DataTable table = new DataTable("Students");
// Déclarer des variables pour les objets DataColumn et DataRow.
DataColumn column;
DataRow row;
// Créer un nouveau DataColumn, définir le DataType,
// ColumnName et ajouter à DataTable.
column = new DataColumn
{
DataType = System.Type.GetType("System.Int32"),
ColumnName = "id",
ReadOnly = true,
Unique = true
};
// Ajouter la colonne à DataColumnCollection.
table.Columns.Add(column);
// Créer la deuxième colonne.
column = new DataColumn
{
DataType = System.Type.GetType("System.String"),
ColumnName = "First Name",
AutoIncrement = false,
Caption = "First Name",
ReadOnly = false,
Unique = false
};
// Ajouter la colonne au tableau.
table.Columns.Add(column);
// Faire de la colonne ID la colonne clé primaire.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
// Créer trois nouveaux objets DataRow et les ajouter
// au 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;
}