Criar tabela no Word usando C# | Crie tabelas aninhadas em C#

As tabelas em um documento Word são uma ferramenta poderosa para organizar e apresentar dados em um formato claro e estruturado. Uma tabela consiste em linhas e colunas que se cruzam para formar células que podem conter texto, números, imagens ou outros elementos. Neste artigo, aprenderemos como criar uma tabela em documentos do Word programaticamente usando C#. Este artigo mostra vários métodos para criar tabelas em um arquivo DOCX suportado por exemplos de código.

Este artigo cobre os seguintes tópicos:

Biblioteca C# para criar tabelas em documentos do Word

Para trabalhar com tabelas em documentos Word, usaremos a biblioteca Aspose.Words for .NET. É uma biblioteca robusta que permite criar e manipular dinamicamente documentos do Word de forma programática diretamente em aplicativos .NET.

Por favor, baixe a DLL ou instale-a do NuGet usando o seguinte comando:

PM> Install-Package Aspose.Words

Crie uma tabela em um documento do Word em C#

Existem duas maneiras de criar tabelas em documentos do Word usando Aspose.Words for .NET:

  • Usando a classe DocumentBuilder
  • Usando o DOM (Modelo de Objeto de Documento)

Você pode escolher o método que melhor atende às suas necessidades. Então, vamos explorar cada um desses métodos em detalhes.

Crie uma tabela usando DocumentBuilder

A classe DocumentBuilder permite a criação eficiente e fácil de documentos dinâmicos do zero ou a modificação de documentos existentes. Com sua ampla gama de funções, podemos inserir diversos elementos de conteúdo, incluindo texto, caixas de seleção, objetos OLE, parágrafos, listas, tabelas, imagens e muito mais.

Siga as etapas abaixo para criar uma tabela em um documento do Word usando a classe DocumentBuilder.

  1. Crie um objeto da classe Document.
  2. Crie um objeto da classe DocumentBuilder.
  3. Crie uma nova tabela usando o método StartTable().
  4. Insira uma célula usando o método InsertCell().
  5. Insira texto na célula usando o método Write().
  6. Repita a inserção de células e texto nas células conforme necessário.
  7. Finalize uma linha usando o método EndRow().
  8. Finalize a tabela usando o método EndTable().
  9. Por fim, salve o documento Word usando o método Save().

O exemplo de código a seguir mostra como criar uma tabela em um documento do Word usando C#.

// Este exemplo de código demonstra como criar uma tabela em um documento do Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Comece a construir a mesa.
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1 Content.");

// Construa a segunda célula.
builder.InsertCell();
builder.Write("Row 1, Cell 2 Content.");

// Chame o método a seguir para encerrar a linha e iniciar uma nova linha.
builder.EndRow();

// Construa a primeira célula da segunda linha.
builder.InsertCell();
builder.Write("Row 2, Cell 1 Content");

// Construa a segunda célula.
builder.InsertCell();
builder.Write("Row 2, Cell 2 Content.");
builder.EndRow();

// Sinalize que terminamos de construir a mesa.
builder.EndTable();

doc.Save("CreateSimpleTable.docx");
Crie uma tabela em um Word usando DocumentBuilder

Crie uma tabela usando DocumentBuilder

Crie uma tabela usando Document Object Model (DOM)

O Document Object Model (DOM) é uma representação na memória de um documento do Word. Ele permite acesso programático para ler, manipular e modificar o conteúdo e a formatação de um documento Word.

Siga as etapas abaixo para criar uma tabela em um documento do Word usando DOM.

  1. Crie um objeto da classe Document.
  2. Crie uma nova tabela usando a classe Table().
  3. Adicione uma tabela ao corpo do documento usando o método AppendChild().
  4. Crie um objeto da classe Row e insira-o na tabela usando o método Table.AppendChild(Row).
  5. Crie um objeto da classe Cell, defina opções de formatação e adicione texto à célula.
  6. Insira a célula na linha usando o método Row.AppendChild(Cell).
  7. Depois disso, repita o processo para quantas linhas desejar.
  8. Por fim, salve o documento Word usando o método Save().

O exemplo de código a seguir mostra como criar uma tabela em um documento do Word usando C#.

// Este exemplo de código demonstra como criar uma tabela em um documento do Word usando DOM em C#
Document doc = new Document();

// Começamos criando o objeto tabela. Observe que devemos passar o objeto document
// ao construtor de cada nó. Isso ocorre porque cada nó que criamos deve pertencer
// para algum documento.
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);

// Aqui poderíamos chamar GaranteMinimum para criar as linhas e células para nós. Este método é usado
// para garantir que o nó especificado seja válido. Neste caso, uma tabela válida deve ter pelo menos uma linha e uma célula.

// Em vez disso, nós mesmos cuidaremos da criação da linha e da tabela.
// Esta seria a melhor maneira de fazer isso se estivéssemos criando uma tabela dentro de um algoritmo.
Row row = new Row(doc);
row.RowFormat.AllowBreakAcrossPages = true;
table.AppendChild(row);

// Agora podemos aplicar quaisquer configurações de ajuste automático.
table.AutoFit(AutoFitBehavior.FixedColumnWidths);

Cell cell = new Cell(doc);
cell.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue;
cell.CellFormat.Width = 80;
cell.AppendChild(new Paragraph(doc));
cell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 1 Text"));

// Anexar uma célula
row.AppendChild(cell);

// Repetiríamos então o processo para as outras células e linhas da tabela.
// Também podemos acelerar as coisas clonando células e linhas existentes.
row.AppendChild(cell.Clone(false));
row.LastCell.AppendChild(new Paragraph(doc));
row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Salve o documento
doc.Save("InsertTableDirectly.docx");
Crie uma tabela usando Document Object Model (DOM)

Crie uma tabela usando Document Object Model (DOM)

Crie uma tabela aninhada em um documento do Word usando C#

Também podemos criar uma nova tabela dentro de uma célula da tabela. A seguir estão as etapas para criar uma tabela aninhada em um documento do Word.

  1. Crie um objeto da classe Document.
  2. Crie um objeto da classe DocumentBuilder.
  3. Crie uma tabela usando o método StartTable() e obtenha uma referência para a tabela em um objeto.
  4. Insira uma célula usando o método InsertCell() e obtenha uma referência para a célula em um objeto.
  5. Insira texto em uma célula usando o método DocumentBuilder.Write().
  6. Repita a inserção de células e texto nas células conforme necessário.
  7. Encerre a tabela quando tiver inserido todas as linhas.
  8. Mova o controle dentro da célula desejada usando o método MoveTo(cell.FirstParagraph).
  9. Crie outra tabela inserindo células e termine a tabela quando terminar.
  10. Por fim, salve o documento Word usando o método Save().

O exemplo de código a seguir mostra como criar uma tabela aninhada em um documento do Word usando C#.

// Este exemplo de código demonstra como criar uma tabela aninhada em um documento do Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Cell cell = builder.InsertCell();
builder.Writeln("Outer Table Cell 1");

builder.InsertCell();
builder.Writeln("Outer Table Cell 2");

// Esta chamada é importante para criar uma tabela aninhada na primeira tabela. 
// Sem esta chamada, as células inseridas abaixo serão anexadas à tabela externa.
builder.EndTable();

// Vá para a primeira célula da tabela externa.
builder.MoveTo(cell.FirstParagraph);

// Construa a mesa interna.
builder.InsertCell();
builder.Writeln("Inner Table Cell 1");
builder.InsertCell();
builder.Writeln("Inner Table Cell 2");
builder.EndTable();

// Salve o documento
doc.Save("NestedTable.docx");
Crie uma tabela aninhada em um documento do Word usando C#

Crie uma tabela aninhada em um documento do Word usando C#

Clonar uma tabela existente em um documento do Word em C#

Podemos clonar uma tabela existente em um documento Word seguindo as etapas abaixo:

  1. Carregue um documento existente com uma tabela usando a classe Document.
  2. Obtenha a tabela em um objeto usando o método GetChild(NodeType.TABLE, int, boolean).
  3. Clone uma tabela usando o método Table.Clone(True).
  4. Insira uma tabela clonada usando o método Table.ParentNode.InsertAfter().
  5. Insira um parágrafo vazio entre tabelas usando o método Table.ParentNode.InsertAfter(new Paragraph(Document), Table).
  6. Por fim, salve o documento Word usando o método Save().

O exemplo de código a seguir mostra como clonar uma tabela em um documento do Word usando C#.

// Este exemplo de código demonstra como clonar uma tabela existente em um documento do Word usando C#
Document doc = new Document("Tables.docx");

Table table = (Table) doc.GetChild(NodeType.Table, 0, true);

// Clone a tabela e insira-a no documento após o original.
Table tableClone = (Table) table.Clone(true);
table.ParentNode.InsertAfter(tableClone, table);

// Insira um parágrafo vazio entre as duas tabelas,
// caso contrário, eles serão combinados em um só ao salvar. Isso tem a ver com a validação do documento.
table.ParentNode.InsertAfter(new Paragraph(doc), table);
            
doc.Save("CloneCompleteTable.docx");
Clonar uma tabela existente em um documento do Word em C#

Clonar uma tabela existente em um documento do Word em C#

Crie uma tabela em um documento do Word a partir de HTML

Também podemos criar uma tabela em um documento Word usando uma string HTML seguindo as etapas abaixo:

  1. Crie um objeto da classe Document.
  2. Crie um objeto da classe DocumentBuilder.
  3. Insira a string HTML da tabela no documento usando o método DocumentBuilder.InsertHtml(String).
  4. Finalmente, salve o documento usando o método Document.Save().

O exemplo de código a seguir mostra como inserir uma tabela HTML em um documento do Word usando C#.

// Este exemplo de código demonstra como inserir uma tabela HTML em um documento do Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Observe que AutoFitSettings não se aplica a tabelas inseridas de HTML.
builder.InsertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

doc.Save("InsertTableFromHtml.docx");
Crie uma tabela em um documento do Word a partir de HTML

Crie uma tabela em um documento do Word a partir de HTML

Obtenha uma licença API gratuita

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

Conclusão

Neste artigo, aprendemos como criar tabelas em documentos do Word usando C#. Exploramos vários métodos para criar tabelas programaticamente usando C#. Também vimos como criar tabelas aninhadas ou clonar dinamicamente tabelas existentes em documentos do Word. Além disso, você pode aprender mais e explorar vários outros recursos da biblioteca usando a documentação. Em caso de qualquer ambigüidade, sinta-se à vontade para nos contatar em nosso fórum de suporte gratuito.

Veja também