Inserir DataTable no documento do Word em C #

Como desenvolvedor .NET, você precisa lidar com objetos DataTable com muita frequência. Especialmente quando você precisa importar ou exportar dados de bancos de dados ou arquivos XML/JSON. Ao gerar documentos programaticamente, pode ser necessário inserir dados dos objetos DataTable diretamente na tabela em documentos do Word. Para esses casos, deixe-me fornecer a solução perfeita e mais fácil para inserir dados do DataTable em um documento do Word em C#.

Biblioteca C# para Inserir DataTable no Word DOC - Download Gratuito

Para importar dados de objetos DataTable para documentos do Word, usaremos Aspose.Words for .NET. É uma biblioteca rica em recursos que permite criar e processar documentos do MS Word. Você pode baixar sua DLL ou instalá-la do NuGet.

Baixar DLL

Instalar via NuGet

PM> Install-Package Aspose.Words

C# Inserir DataTable no documento do Word - Etapas

A seguir estão as etapas que seguiremos para recuperar dados de uma DataTable e inseri-los no documento do Word.

  • Carregue dados de um banco de dados ou arquivo de dados no objeto DataTable.
  • Crie um novo documento do Word e adicione uma nova tabela a ele.
  • Faça um loop pelas linhas no DataTable e insira cada linha na tabela do Word.

E é isso.

Vamos agora dar uma olhada em como transformar essas etapas no código C# e importar uma DataTable para um documento do Word.

Inserir dados do DataTable no Word DOC em C

Primeiro, escreveremos um método que aceite o DocumentBuilder para construir o documento, DataTable com dados e um parâmetro adicional para habilitar/desabilitar a importação de cabeçalhos de coluna. Além disso, retorna o objeto Tabela.

A seguir está o fluxo de trabalho desse método.

  • Crie uma nova tabela e obtenha sua referência em um objeto Table.
  • Insira colunas na tabela de acordo com as colunas em DataTable.
  • Defina o peso da fonte se a primeira linha for para títulos.
  • Percorra cada DataRow na coleção DataTable.Rows.
  • Insira uma nova célula para cada valor e defina o tipo de dados de acordo.
  • Retorne o objeto Tabela.

A seguir está a implementação do método para importar dados de um DataTable para uma tabela no documento do Word em C#.

///<summary>
/// Importa o conteúdo do DataTable especificado para um novo objeto Aspose.Words Table. 
/// A tabela é inserida na posição atual do construtor de documentos e usando a formatação do construtor atual, se houver alguma definida.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Verifique se os nomes das colunas da fonte de dados devem ser incluídos em uma linha de cabeçalho.
    if (importColumnHeadings)
    {
        // Armazene os valores originais dessas propriedades antes de alterá-los.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Formate a linha do título com as propriedades apropriadas.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Crie uma nova linha e insira o nome de cada coluna na primeira linha da tabela.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Restaure a formatação original.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Insira uma nova célula para cada objeto.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Defina um formato personalizado para datas e horas.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // Por padrão, qualquer outro item será inserido como texto.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // Depois de inserirmos todos os dados do registro atual, podemos encerrar a linha da tabela.
        builder.EndRow();
    }

    // Terminamos de inserir todos os dados do DataTable, podemos finalizar a tabela.
    builder.EndTable();

    return table;
}

Agora é hora de chamar esse método e inserir um DataTable em um documento do Word.

Importar DataTable para documento do Word em C

A seguir estão as etapas para importar dados do DataTable para um documento do Word em C#.

  • Crie um novo documento do Word (ou carregue um existente) usando a classe Documento.
  • Leia os dados do banco de dados/arquivo no objeto DataTable.
  • Chame o método que escrevemos na seção anterior e obtenha a Tabela retornada.
  • Defina a formatação da tabela.
  • Salve o arquivo do Word usando o método Document.Save().

O exemplo de código a seguir mostra como inserir um DataTable em um documento do Word em C#.

// Crie um novo documento.
Document doc = new Document();

// Podemos posicionar onde queremos que a tabela seja inserida e também especificar qualquer formatação extra a ser
// aplicado sobre a mesa também.
DocumentBuilder builder = new DocumentBuilder(doc);

// Queremos girar a paisagem da página, pois esperamos uma tabela ampla.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// Recupere os dados de nossa fonte de dados que está armazenada como uma DataTable.
DataTable dataTable = ds.Tables[0];

// Crie uma tabela no documento a partir dos dados contidos no DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Podemos aplicar um estilo de tabela como uma forma muito rápida de aplicar formatação a toda a tabela.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Para nossa tabela, queremos remover o cabeçalho da coluna da imagem.
table.FirstRow.LastCell.RemoveAllChildren();

// Salve o documento de saída.
doc.Save("Table.docx");

C# DataTable to Word Importer Library - Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para usar Aspose.Words for .NET sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como inserir dados de uma DataTable em um documento do Word em C#. Você pode integrar facilmente o exemplo de código em seus aplicativos e importar dados diretamente do banco de dados/XML/JSON para documentos do Word usando DataTable.

Biblioteca do .NET Word - Leia mais

Você pode visitar a documentação de Aspose.Words for .NET para explorar mais sobre a biblioteca. Caso você tenha alguma dúvida, sinta-se à vontade para nos informar através do nosso fórum.

Veja também