Crear documentos de Word en C++

Aspose.Words es una colección rica en funciones de API que le permite crear, editar y convertir documentos de MS Word mediante programación. Proporciona una amplia gama de funciones básicas y avanzadas para manipular documentos de procesamiento de texto. En este artículo, aprenderá a usar Aspose.Words for C++ y a crear documentos de MS Word desde cero usando C++. La guía paso a paso, así como los ejemplos de código, le permitirán saber cómo insertar texto, imágenes, tablas, listas y otros elementos en documentos de Word.

API de C++ para crear documentos de MS Word

Aspose.Words for C++ le permite generar y manipular los documentos de procesamiento de texto dentro de aplicaciones C++ sin MS Word. Puede descargar la API o instalarla dentro de sus aplicaciones C++ usando NuGet con el siguiente comando.

PM> Install-Package Aspose.Words.Cpp

Crear documentos de MS Word usando C++

Primero, creemos un documento de Word simple y guárdelo como un archivo .doc o .docx. Para esto, debe seguir los siguientes pasos:

El siguiente ejemplo de código muestra cómo crear un documento DOCX de Word usando C++.

// Inicializar un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Use un generador de documentos para agregar contenido al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Añadir texto
builder->Writeln(u"Hello World!"); 
// Guarde el documento en el disco.
doc->Save(u"document.docx");

Edite o actualice Word DOC/DOCX existente usando C++

También puede editar los documentos de Word existentes usando Aspose.Words for C++. Para ello, la API utiliza el Modelo de objetos de documento (DOM) para la representación en memoria de un documento. El DOM le permite acceder a los elementos de un documento de Word, como encabezado/pie de página, párrafos, tablas, etc. Lea más sobre el DOM aquí.

Para actualizar un documento de Word, simplemente cárguelo usando la clase Document y procéselo como desee. Los siguientes son los pasos para editar y actualizar un documento de Word existente.

  • Cargue el documento de Word usando la clase Document.
  • Cree un objeto de la clase DocumentBuilder para acceder al contenido.
  • Accede al párrafo deseado (o cualquier otro elemento) y actualiza el contenido.
  • Guarde el documento actualizado utilizando el método Document->Save().

El siguiente ejemplo de código muestra cómo actualizar el texto de un párrafo en un documento de Word usando C++.

// Inicializar un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Use un generador de documentos para agregar contenido al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Obtener sección
auto section = doc->get_Sections()->idx_get(0);
// Obtener cuerpo
auto body = section->get_Body();
// obtener el primer párrafo
auto para = body->get_FirstParagraph();
// Actualizar texto
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Guarde el documento en el disco.
doc->Save(u"updated_document.docx");

Insertar imágenes en un documento de Word usando C++

Los siguientes son los pasos para insertar una imagen dentro de documentos de MS Word usando C++.

El siguiente ejemplo de código muestra cómo insertar una imagen en un documento de Word usando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Agregue un logotipo en la parte superior izquierda de la página. La imagen se coloca delante de todo el resto del texto.
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");

Insertar tabla en documentos de Word usando C++

La tabla es un elemento importante de los documentos de Word para mantener los datos en forma de filas y columnas. Para generar una tabla dentro de los documentos de Word, siga los pasos a continuación.

  • Cree un nuevo documento de Word utilizando la clase Document.
  • Cree un objeto de la clase Table.
  • Inserte la tabla en el documento usando el método Document->getFirstSection()->getBody()->AppendChild().
  • Cree una nueva fila usando la clase Row.
  • Inserte una fila en la tabla usando el método Table->AppendChild(row).
  • Cree una nueva Cell e inserte texto en ella usando el método Cell->getFirstParagraph()->AppendChild().
  • Inserte la celda en la fila usando el método Row->AppendChild().
  • Repita el proceso para agregar varias filas.
  • Guarde el documento usando el método Document->Save().

El siguiente ejemplo de código muestra cómo insertar una tabla en un documento de Word usando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Agregue la tabla al 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);
// Ahora podemos aplicar cualquier configuración de ajuste automático.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Crea una celda y agrégala a la fila.
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);
// Agregue un párrafo a la celda, así como una nueva ejecución con algo de texto.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Agregue la celda a la fila.
row->AppendChild(cell);
// Luego repetiríamos el proceso para las otras celdas y filas de la tabla.
// También podemos acelerar las cosas clonando celdas y filas 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"));
// Guarde el documento en el disco.
doc->Save(u"document_with_table.docx");

Agregar listas en documentos de Word usando C++

Por último, pero no menos importante, crear una lista en los documentos de Word. Los siguientes son los pasos para crear una lista de viñetas.

  • Cree un nuevo documento de Word o cargue uno existente usando la clase Document.
  • Defina un nuevo objeto DocumentBuilder e inicialícelo con el objeto Documento.
  • Cree una lista usando el método DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
  • Rellene la lista y establezca el nivel de la lista.
  • Guarde el documento como un archivo.

El siguiente ejemplo de código muestra cómo crear una lista en un documento de Word usando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Cree una lista numerada basada en una de las plantillas de lista de Microsoft Word y
// aplicarlo al párrafo actual en el generador de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Hay 9 niveles en esta lista, intentémoslos todos.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Cree una lista con viñetas basada en una de las plantillas de lista de Microsoft Word
// and aplicarlo al párrafo actual en el generador de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Hay 9 niveles en esta lista, intentémoslos todos.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Esta es una forma de detener el formato de la lista. 
builder->get_ListFormat()->set_List(nullptr); 
// Guarde el documento en el disco.
builder->get_Document()->Save(u"document_with_list.docx");

Conclusión

En este artículo, ha visto cómo crear documentos de MS Word desde cero usando C++. Además, ha aprendido a insertar elementos como texto, imágenes, tablas y listas en documentos de Word nuevos o existentes. Puede explorar más sobre las características avanzadas de la API utilizando la documentación.

Ver también