Biblioteca .NET para criação de documentos de processamento de texto
Leia, escreva, manipule e converta arquivos do Word, crie tabelas no DOCX por meio da API .NET de código aberto.
Open XML SDK é uma API de código aberto, desenvolvida pela Microsoft e distribuída sob o código de conduta de código aberto da Microsoft para manipular documentos de processamento de texto, incluindo DOCX, DOTX, DOCM, formatos de arquivo DOTM
Usando a API, você pode adicionar texto, cabeçalho, rodapé, notas finais, notas de rodapé, estilos, temas e muito mais. Ele permite que você gere documentos do Word de alto desempenho e extraia dados deles. A API oferece suporte a várias plataformas .NET, incluindo .NET 3.5, .NET 4.0, .NET 4.6 e .NET Standard 1.3.
Introdução ao SDK do Open XML
Em primeiro lugar, você precisa ter o .NET Framework 3.5 ou superior. Depois disso, faça o download do repositório manualmente no GitHub ou instale-o no NuGet.
Instalação SDK Open XML do NuGet
Install-Package DocumentFormat.OpenXml
Manipular arquivo DOCX usando C#
O Open XML SDK permite que os programadores .NET criem e modifiquem o processamento de texto de seus próprios aplicativos .NET. Para modificar um arquivo existente, você pode abrir um arquivo existente e anexar alterações como texto, parágrafos, tabelas e muito mais.
Adicionar parágrafo em DOCX - C#
// Open an existing word processing document
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open("fileformat.docx", true))
{
Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
// Add paragraph
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text("File Format Developer Guide"));
}
Crie uma tabela em DOCX usando C#
A API permite que os desenvolvedores adicionem uma tabela em documentos de processamento de texto. Você pode adicionar uma tabela, definir propriedades de tabela, definir grade de tabela e propriedades de grade de coluna. Além disso, você pode gerenciar células e linhas da tabela usando as classes TableCell e TableRow, respectivamente.
Criar tabela em DOCX - C#
// Open an existing word processing document
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open("fileformat.docx", true))
{
Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
// Create a table.
Table table = new Table();
// Set the style and width for the table.
TableProperties tableProperties = new TableProperties();
TableStyle tableStyle = new TableStyle() { Val = "TableGrid" };
// Make the table width 100% of the page width.
TableWidth tableWidth = new TableWidth() { Width = "5000", Type = TableWidthUnitValues.Pct };
// Apply
tableProperties.Append(tableStyle, tableWidth);
table.AppendChild(tableProperties);
// Add columns
TableGrid tableGrid = new TableGrid(new GridColumn(), new GridColumn(), new GridColumn());
table.AppendChild(tableGrid);
// Create 1 row to the table.
TableRow tableRow = new TableRow();
// Add a cell to each column in the row.
TableCell tableCell = new TableCell(new Paragraph(new Run(new Text("Column 1"))));
TableCell tableCell1 = new TableCell(new Paragraph(new Run(new Text("Column 2"))));
//Append data
tableRow.Append(tableCell, tableCell1);
// Add row to the table.
table.AppendChild(tableRow);
// Add the table to the document
body.AppendChild(table);
}
Cabeçalhos e rodapés em documentos de processamento de texto
A organização adequada dos documentos é muito importante e é a necessidade de cada organização. Cabeçalhos e rodapés são as partes principais dos documentos que podem ajudar a organizar adequadamente os documentos de processamento de texto, colocando algumas informações adicionais, como datas relevantes, tópicos, nome do autor, imagens, números de página e assim por diante. Ele também suporta a adição de vários cabeçalhos.
Gerenciar cabeçalhos no documento do Word
public static void ApplyHeader(WordprocessingDocument doc)
{
// Get the main document part.
MainDocumentPart mainDocPart = doc.MainDocumentPart;
HeaderPart headerPart1 = mainDocPart.AddNewPart("r97");
Header header1 = new Header();
Paragraph paragraph1 = new Paragraph(){ };
Run run1 = new Run();
Text text1 = new Text();
text1.Text = "Header stuff";
run1.Append(text1);
paragraph1.Append(run1);
header1.Append(paragraph1);
headerPart1.Header = header1;
SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants().FirstOrDefault();
if (sectionProperties1 == null)
{
sectionProperties1 = new SectionProperties() { };
mainDocPart.Document.Body.Append(sectionProperties1);
}
HeaderReference headerReference1 = new HeaderReference() { Type = HeaderFooterValues.Default, Id = "r97" };
sectionProperties1.InsertAt(headerReference1,0);
}
Gerenciar rodapés no documento do Word
public static void ApplyFooter(WordprocessingDocument doc)
{
// Get the main document part.
MainDocumentPart mainDocPart = doc.MainDocumentPart;
FooterPart footerPart1 = mainDocPart.AddNewPart("r98");
Footer footer1 = new Footer();
Paragraph paragraph1 = new Paragraph() { };
Run run1 = new Run();
Text text1 = new Text();
text1.Text = "Footer stuff";
run1.Append(text1);
paragraph1.Append(run1);
footer1.Append(paragraph1);
footerPart1.Footer = footer1;
SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants().FirstOrDefault();
if (sectionProperties1 == null)
{
sectionProperties1 = new SectionProperties() { };
mainDocPart.Document.Body.Append(sectionProperties1);
}
FooterReference footerReference1 = new FooterReference() { Type = DocumentFormat.OpenXml.Wordprocessing.HeaderFooterValues.Default, Id = "r98" };
sectionProperties1.InsertAt(footerReference1, 0);
}