Crea documenti Word in C++

Aspose.Words è una raccolta di API ricca di funzionalità che ti consente di creare, modificare e convertire documenti MS Word a livello di codice. Fornisce un’ampia gamma di funzioni di base e avanzate per la manipolazione di documenti di elaborazione testi. In questo articolo imparerai come usare Aspose.Words per C++ e creare documenti MS Word da zero usando C++. La guida passo passo e gli esempi di codice ti faranno sapere come inserire testo, immagini, tabelle, elenchi e altri elementi nei documenti di Word.

API C++ per creare documenti MS Word

Aspose.Words for C++ ti consente di generare e manipolare i documenti di elaborazione testi all’interno di applicazioni C++ senza MS Word. Puoi scaricare l’API o installarla all’interno delle tue applicazioni C++ usando NuGet con il comando seguente.

PM> Install-Package Aspose.Words.Cpp

Crea documenti MS Word usando C++

Per prima cosa creiamo un semplice documento Word e lo salviamo come file .doc o .docx. Per questo, è necessario seguire i passaggi seguenti:

Nell’esempio di codice seguente viene illustrato come creare un documento Word DOCX utilizzando C++.

// Inizializza un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Utilizzare un generatore di documenti per aggiungere contenuto al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Aggiungi testo
builder->Writeln(u"Hello World!"); 
// Salva il documento su disco.
doc->Save(u"document.docx");

Modifica o aggiorna Word DOC/DOCX esistente utilizzando C++

Puoi anche modificare i documenti Word esistenti usando Aspose.Words per C++. Per questo, l’API utilizza il Document Object Model (DOM) per la rappresentazione in memoria di un documento. Il DOM ti consente di accedere agli elementi di un documento Word come intestazione/piè di pagina, paragrafi, tabelle e così via. Leggi di più sul DOM qui.

Per aggiornare un documento Word, caricalo semplicemente usando la classe Document ed elaboralo come desideri. Di seguito sono riportati i passaggi per modificare e aggiornare un documento Word esistente.

  • Carica il documento di Word usando la classe Document.
  • Crea un oggetto della classe DocumentBuilder per accedere al contenuto.
  • Accedi al paragrafo desiderato (o qualsiasi altro elemento) e aggiorna il contenuto.
  • Salva il documento aggiornato usando il metodo Document->Save().

Nell’esempio di codice seguente viene illustrato come aggiornare il testo di un paragrafo in un documento di Word utilizzando C++.

// Inizializza un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Utilizzare un generatore di documenti per aggiungere contenuto al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Ottieni sezione
auto section = doc->get_Sections()->idx_get(0);
// Prendi corpo
auto body = section->get_Body();
// Ottieni il primo paragrafo
auto para = body->get_FirstParagraph();
// Aggiorna testo
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Salva il documento su disco.
doc->Save(u"updated_document.docx");

Inserisci le immagini nel documento di Word usando C++

Di seguito sono riportati i passaggi per inserire un’immagine all’interno di documenti MS Word utilizzando C++.

L’esempio di codice seguente mostra come inserire un’immagine in un documento di Word usando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Aggiungi un logo in alto a sinistra della pagina. L'immagine viene posizionata davanti a tutto il resto del testo.
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");

Inserisci tabella nei documenti di Word usando C++

La tabella è un elemento importante dei documenti di Word per mantenere i dati sotto forma di righe e colonne. Per generare una tabella all’interno dei documenti di Word, segui i passaggi seguenti.

  • Crea un nuovo documento Word usando la classe Document.
  • Crea un oggetto della classe Tabella.
  • Inserisci la tabella nel documento usando il metodo Document->getFirstSection()->getBody()->AppendChild().
  • Crea una nuova riga usando la classe Row.
  • Inserisci una riga nella tabella usando il metodo Table->AppendChild(row).
  • Crea un nuovo Cell e inserisci del testo usando il metodo Cell->getFirstParagraph()->AppendChild().
  • Inserisci la cella nella riga usando il metodo Row->AppendChild().
  • Ripetere la procedura per aggiungere più righe.
  • Salva il documento usando il metodo Document->Save().

Nell’esempio di codice seguente viene illustrato come inserire una tabella in un documento di Word utilizzando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Aggiungi la tabella 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);
// Ora possiamo applicare qualsiasi impostazione di adattamento automatico.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Crea una cella e aggiungila alla riga
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);
// Aggiungi un paragrafo alla cella e una nuova corsa con del testo.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Aggiungi la cella alla riga.
row->AppendChild(cell);
// Ripeteremo quindi il processo per le altre celle e righe nella tabella.
// Possiamo anche accelerare le cose clonando celle e righe esistenti.
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"));
// Salva il documento su disco.
doc->Save(u"document_with_table.docx");

Aggiungi elenchi nei documenti di Word usando C++

Ultimo ma non meno importante, la creazione di un elenco nei documenti di Word. Di seguito sono riportati i passaggi per creare un elenco puntato.

  • Crea un nuovo documento Word o caricane uno esistente usando la classe Document.
  • Definire un nuovo oggetto DocumentBuilder e inizializzarlo con l’oggetto Document.
  • Crea una lista usando il metodo DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
  • Compila l’elenco e imposta il livello dell’elenco.
  • Salva il documento come file.

Nell’esempio di codice seguente viene illustrato come creare un elenco in un documento di Word utilizzando C++.

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Crea un elenco numerato basato su uno dei modelli di elenco di Microsoft Word e
// applicalo al paragrafo corrente nel generatore di documenti.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Ci sono 9 livelli in questo elenco, proviamoli tutti.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Crea un elenco puntato basato su uno dei modelli di elenco di Microsoft Word
// and applicalo al paragrafo corrente nel generatore di documenti.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Ci sono 9 livelli in questo elenco, proviamoli tutti.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Questo è un modo per interrompere la formattazione dell'elenco. 
builder->get_ListFormat()->set_List(nullptr); 
// Salva il documento su disco.
builder->get_Document()->Save(u"document_with_list.docx");

Conclusione

In questo articolo, hai visto come creare documenti MS Word da zero usando C++. Inoltre, hai imparato come inserire elementi come testo, immagini, tabelle ed elenchi in documenti Word nuovi o esistenti. Puoi esplorare di più sulle funzionalità avanzate dell’API utilizzando la documentazione.

Guarda anche