Criar documentos do Word em C++

Aspose.Words é uma coleção rica em recursos de APIs que permite criar, editar e converter documentos do MS Word programaticamente. Ele fornece uma ampla gama de recursos básicos e avançados para manipular documentos de processamento de texto. Neste artigo, você aprenderá como usar Aspose.Words for C++ e criar documentos do MS Word do zero usando C++. O guia passo a passo, bem como os exemplos de código, permitirão que você saiba como inserir texto, imagens, tabelas, listas e outros elementos em documentos do Word.

API C++ para criar documentos do MS Word

Aspose.Words for C++ permite gerar e manipular os documentos de processamento de texto em aplicativos C++ sem o MS Word. Você pode baixar a API ou instalá-la em seus aplicativos C++ usando NuGet com o seguinte comando.

PM> Install-Package Aspose.Words.Cpp

Criar documentos do MS Word usando C++

Vamos primeiro criar um documento simples do Word e salvá-lo como um arquivo .doc ou .docx. Para isso, você precisa seguir os passos abaixo:

O exemplo de código a seguir mostra como criar um documento Word DOCX usando C++.

// Inicialize um Documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Use um construtor de documentos para adicionar conteúdo ao documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Adicione texto
builder->Writeln(u"Hello World!"); 
// Salve o documento em disco.
doc->Save(u"document.docx");

Edite ou atualize o Word DOC/DOCX existente usando C++

Você também pode editar os documentos existentes do Word usando Aspose.Words para C++. Para isso, a API usa o Document Object Model (DOM) para a representação na memória de um documento. O DOM permite acessar os elementos de um documento do Word, como cabeçalho/rodapé, parágrafos, tabelas, etc. Leia mais sobre o DOM aqui.

Para atualizar um documento do Word, basta carregá-lo usando a classe Document e processá-lo conforme desejado. A seguir estão as etapas para editar e atualizar um documento do Word existente.

  • Carregue o documento do Word usando a classe Document.
  • Crie um objeto da classe DocumentBuilder para acessar o conteúdo.
  • Acesse o parágrafo desejado (ou qualquer outro elemento) e atualize o conteúdo.
  • Salve o documento atualizado usando o método Document->Save().

O exemplo de código a seguir mostra como atualizar o texto de um parágrafo em um documento do Word usando C++.

// Inicialize um Documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Use um construtor de documentos para adicionar conteúdo ao documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Obter seção
auto section = doc->get_Sections()->idx_get(0);
// Obter corpo
auto body = section->get_Body();
// Obter primeiro parágrafo
auto para = body->get_FirstParagraph();
// Atualizar texto
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Salve o documento em disco.
doc->Save(u"updated_document.docx");

Inserir imagens no documento do Word usando C++

A seguir estão as etapas para inserir uma imagem em documentos do MS Word usando C++.

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

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Adicione um logotipo no canto superior esquerdo da página. A imagem é colocada na frente de todos os outros textos.
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");

Inserir tabela em documentos do Word usando C++

A tabela é um elemento importante dos documentos do Word para manter os dados na forma de linhas e colunas. Para gerar uma tabela dentro dos documentos do Word, siga as etapas abaixo.

  • Crie um novo documento do Word usando a classe Document.
  • Crie um objeto da classe Tabela.
  • Insira a tabela no documento usando o método Document->getFirstSection()->getBody()->AppendChild().
  • Crie uma nova linha usando a classe Row.
  • Insira uma linha na tabela usando o método Table->AppendChild(row).
  • Crie uma nova Cell e insira texto nela usando o método Cell->getFirstParagraph()->AppendChild().
  • Insira a célula na linha usando o método Row->AppendChild().
  • Repita o processo para adicionar várias linhas.
  • Salve o documento usando o método Document->Save().

O exemplo de código a seguir mostra como inserir uma tabela no documento do Word usando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Adicione a tabela ao documento.
doc->get_FirstSection()->get_Body()->AppendChild(table); 
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Agora podemos aplicar qualquer configuração de ajuste automático.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Crie uma célula e adicione-a à linha
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);
// Adicione um parágrafo à célula, bem como uma nova execução com algum texto.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Adicione a célula à linha.
row->AppendChild(cell);
// Em seguida, repetiríamos 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((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
// Salve o documento em disco.
doc->Save(u"document_with_table.docx");

Adicionar listas em documentos do Word usando C++

Por último, mas não menos importante, criar uma lista nos documentos do Word. A seguir estão as etapas para criar uma lista de marcadores.

  • Crie um novo documento do Word ou carregue um existente usando a classe Document.
  • Defina um novo objeto DocumentBuilder e inicialize-o com o objeto Document.
  • Crie uma lista usando o método DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
  • Preencha a lista e defina o nível da lista.
  • Salve o documento como um arquivo.

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

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Crie uma lista numerada com base em um dos modelos de lista do Microsoft Word e
// aplicá-lo ao parágrafo atual no construtor de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Existem 9 níveis nesta lista, vamos experimentar todos eles.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Criar uma lista com marcadores com base em um dos modelos de lista do Microsoft Word
// and aplicá-lo ao parágrafo atual no construtor de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Existem 9 níveis nesta lista, vamos experimentar todos eles.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Esta é uma maneira de parar a formatação da lista. 
builder->get_ListFormat()->set_List(nullptr); 
// Salve o documento em disco.
builder->get_Document()->Save(u"document_with_list.docx");

Conclusão

Neste artigo, você viu como criar documentos do MS Word do zero usando C++. Além disso, você aprendeu a inserir elementos como texto, imagens, tabelas e listas em documentos do Word novos ou existentes. Você pode explorar mais sobre os recursos avançados da API usando a documentação.

Veja também