Exportar dados do Excel para preencher formulário PDF
Detalhes da Implementação
No cenário a seguir, vamos usar um formulário PDF, que contém três campos de formulário chamados ID, Nome e Gênero.
No formulário especificado acima, há uma página, com três campos nomeados como “ID”, “Nome” e “Gênero”, respectivamente. Estaremos extraindo os dados da planilha do excel a seguir para o objeto DataTable.
Precisamos criar um objeto da classe AutoFiller e vincular o formulário Pdf presente nas imagens acima e usar o método ImportDataTable para preencher os campos do formulário usando os dados presentes no objeto DataTable.Uma vez que o método é chamado, um novo arquivo de formulário Pdf é gerado, que contém cinco páginas com o formulário preenchido com base nos dados da planilha Excel. O formulário Pdf de entrada era de uma única página e o resultante tem cinco páginas, porque o número de linhas de dados na planilha Excel é 5. A classe DataTable oferece a capacidade de usar a primeira linha da planilha como ColumnName.
Workbook workbook = new Workbook();
// Criando um fluxo de arquivo contendo o arquivo Excel a ser aberto
FileStream fstream = new FileStream("d:\\pdftest\\newBook1.xls", FileMode.Open);
// Abrindo o arquivo Excel através do fluxo de arquivo
workbook.Open(fstream);
// Acessando a primeira planilha no arquivo Excel
Worksheet worksheet = workbook.Worksheets[0];
// Exportando o conteúdo de 7 linhas e 2 colunas começando da 1ª célula para o DataTable
DataTable dataTable = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxRow + 1, worksheet.Cells.MaxColumn + 1, true);
// Fechando o fluxo de arquivo para liberar todos os recursos
fstream.Close();
// Criar um objeto da classe AutoFiller
AutoFiller autoFiller = new AutoFiller();
// O arquivo pdf de entrada que contém campos de formulário
autoFiller.InputFileName = "d:\\pdftest\\DataTableExample.pdf";
// O pdf resultante, que conterá os campos de formulário preenchidos com informações do DataTable
autoFiller.OutputFileName = "D:\\pdftest\\DataTableExample_Filled.pdf";
// Chamar o método para importar os dados do objeto DataTable para os campos do formulário Pdf.
autoFiller.ImportDataTable(dataTable);
// Chamar o método de salvar para gerar o arquivo pdf
autoFiller.Save();
Para preenchimento a partir de XLSX, por favor, use o próximo trecho de código:
internal static void FillFromXLSX()
{
// Cria um objeto da classe AutoFiller
AutoFiller autoFiller = new AutoFiller();
// O arquivo pdf de entrada que contém campos de formulário
autoFiller.BindPdf(@"C:\Samples\Facades\Autofiller\Sample-Form-01.pdf");
DataTable dataTable = GenerateDataTable();
// Chama o método para importar os dados do objeto DataTable para os campos do formulário PDF.
autoFiller.ImportDataTable(dataTable);
// O pdf resultante, que conterá os campos do formulário preenchidos com informações do DataTable
autoFiller.Save(@"C:\Samples\Facades\Autofiller\Sample-Form-01_mod.pdf");
}
Aspose.PDF para .NET permite gerar Tabela de Dados em documento PDF:
private static DataTable GenerateDataTable()
{
string[] names = new[] { "Olivia", "Oliver", "Amelia", "George", "Isla", "Harry", "Ava", "Noah" };
// Cria uma nova DataTable.
System.Data.DataTable table = new DataTable("Students");
// Declara variáveis para os objetos DataColumn e DataRow.
DataColumn column;
DataRow row;
// Cria uma nova DataColumn, define o DataType,
// ColumnName e adiciona ao DataTable.
column = new DataColumn
{
DataType = System.Type.GetType("System.Int32"),
ColumnName = "id",
ReadOnly = true,
Unique = true
};
// Adiciona a Coluna à DataColumnCollection.
table.Columns.Add(column);
// Cria a segunda coluna.
column = new DataColumn
{
DataType = System.Type.GetType("System.String"),
ColumnName = "First Name",
AutoIncrement = false,
Caption = "First Name",
ReadOnly = false,
Unique = false
};
// Adiciona a coluna à tabela.
table.Columns.Add(column);
// Torna a coluna ID a coluna de chave primária.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
// Cria três novos objetos DataRow e os adiciona
// ao 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;
}