Le tabelle sono utili per organizzare informazioni e cifre. Spesso inseriamo tabelle in documenti word (DOCX/DOC) per mostrare informazioni. In un’applicazione di elaborazione testi, puoi facilmente creare tabelle usando C++. Puoi seguire i seguenti esempi per imparare a lavorare con le tabelle nei documenti di Word:

Procediamo ad approfondire tutti questi argomenti:

Inserisci tabelle nell’API dei documenti di Word

Innanzitutto, tieni presente che utilizzerai l’API Aspose.Words for C++ per inserire tabelle in un documento Word. Puoi configurare l’API scaricandola da Nuove versioni o tramite la galleria NuGet. Una volta configurati correttamente, puoi semplicemente utilizzare i metodi, le proprietà e le classi esposte dall’API in modo che alcune semplici chiamate API possano essere utilizzate per creare, modificare o manipolare documenti Microsoft Word, come file DOCX o DOC.

Inserisci una tabella nei documenti di Word usando C++

Puoi inserire una tabella in documenti Word con pochi semplici passaggi. Tuttavia, è importante notare qui che è necessario passare l’oggetto documento al costruttore di ciascun nodo in modo che tutti i nodi figlio appartengano allo stesso oggetto. È necessario seguire i passaggi elencati di seguito:

  1. Inizializza l’oggetto della classe Document.
  2. Crea l’oggetto Tabella.
  3. Aggiungi la tabella al documento
  4. Crea righe e colonne
  5. Applica AutoFit sulle celle della tabella
  6. Salva il documento Word di output

Il frammento di codice seguente mostra come inserire una tabella in un documento Word (DOCX/DOC) utilizzando C++:

// Il percorso della directory dei documenti.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Iniziamo creando l'oggetto tabella. Nota come dobbiamo passare l'oggetto documento
// Al costruttore di ogni nodo. Questo perché ogni nodo che creiamo deve appartenere
// A qualche documento.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Aggiungi la tabella al documento.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Qui potremmo chiamare GuaranteeMinimum per creare le righe e le celle per noi. Questo metodo viene utilizzato
// Per garantire che il nodo specificato sia valido, in questo caso una tabella valida dovrebbe averne almeno uno
// Riga e una cella, quindi questo metodo li crea per noi.
// Invece ci occuperemo noi stessi della creazione della riga e della tabella. Questo sarebbe il modo migliore per farlo
// Ad esempio, se stessimo creando una tabella all'interno di un algoritmo.
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"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";

// Salva il documento su disco.
doc->Save(outputPath);

Inserisci tabella da HTML nei documenti di Word usando C++

È possibile che un file HTML contenga una tabella che è necessario inserire nei documenti di Word come DOCX, DOC, ecc. Oppure potrebbe essere necessario copiare una tabella da un sito Web. Quindi, invece di creare e progettare la tabella da zero, puoi facilmente analizzare il markup HTML come tabella in un documento Word. Ad esempio, puoi aggiungere una tabella in un documento Word utilizzando la seguente stringa HTML:

<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>

Abbiamo mantenuto i contenuti semplici in modo che il supporto per i tag table possa essere dimostrato con casi d’uso basilari ma importanti. Inoltre, è importante notare qui che Adattamento automatico non può essere applicato su tabelle create da HTML.

Seguiamo i passaggi seguenti per inserire la tabella HTML nel documento di Word:

  1. Inizializza un’istanza della classe Document.
  2. Passa il markup HTML con il metodo InsertHtml.
  3. Salva il file word DOCX di output

Di seguito il codice segue questi passaggi e mostra come creare una tabella nel documento di Word con HTML usando C++:

// Il percorso della directory dei documenti.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Inserisci la tabella da HTML. Si noti che AutoFitSettings non si applica alle tabelle
// Inserito da HTML.
builder->InsertHtml(u"<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>");

System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// Salva il documento su disco.
doc->Save(outputPath);

Puoi notare che questo metodo è un po’ più semplice dell’approccio che abbiamo esplorato sopra. Il motivo è che non è necessario aggiungere ogni nodo uno per uno per le righe, le colonne o le celle perché il tag Tabella nella stringa HTML contiene tutte le informazioni. Di seguito è riportato uno screenshot di questa semplice tabella HTML aggiunta al documento di Word:

Inserisci tabella in Word

Inserisci tabella utilizzando Document Builder in C++

La cosa migliore di Aspose.Words per l’API C++ è che offre una varietà di funzionalità che diventano un vantaggio competitivo per l’API e la fanno risaltare tra le altre opzioni. Allo stesso modo, la funzionalità dell’inserimento di tabelle utilizzando un generatore di documenti è un altro approccio all’aggiunta di tabelle nei documenti Word (DOC/DOCX). Quindi esploriamo i dettagli da tre diverse prospettive:

1) Inserisci Simple Table in DOCX con Document Builder usando C++

Per aggiungere una semplice tabella in un documento Word con Document builder, devi seguire i passaggi seguenti:

  1. Crea Documento Oggetto
  2. Chiama il metodo StartTable() e inserisci le celle
  3. Aggiungi la riga e le celle
  4. Salva il file DOCX di output

Inoltre, il frammento di codice seguente mostra come inserire una tabella semplice nel file DOCX con C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Chiamiamo questo metodo per iniziare a costruire la tabella.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// Costruisci la seconda cella
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Chiama il metodo seguente per terminare la riga e iniziare una nuova riga.
builder->EndRow();

// Costruisci la prima cella della seconda riga.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// Costruisci la seconda cella.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Segnala che abbiamo finito di costruire il tavolo.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Salva il documento su disco.
doc->Save(outputPath);

2) Inserisci tabella formattata in DOCX con Document Builder usando C++

Puoi inserire una tabella formattata in un documento Word con i passaggi seguenti:

  1. Inizializza un’istanza della classe Document.
  2. Crea riga di intestazione
  3. Imposta rientri e caratteristiche per la formattazione
  4. Reimposta la formattazione dei caratteri
  5. Salva il file Word DOCX di output

Di seguito il frammento di codice crea una tabella formattata nel file DOCX usando C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();

// Crea la riga di intestazione.
builder->InsertCell();

// Imposta il rientro sinistro per la tabella. Dopo deve essere applicata la formattazione a livello di tabella
// Almeno una riga è presente nella tabella.
table->set_LeftIndent(20.0);

// Imposta l'altezza e definisci la regola di altezza per la riga di intestazione.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Alcune funzioni speciali per la riga di intestazione.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Header Row,\n Cell 1");

// Non è necessario specificare la larghezza di questa cella perché è ereditata dalla cella precedente.
builder->InsertCell();
builder->Write(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();

// Imposta le funzionalità per le altre righe e celle.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);

// Reimposta l'altezza e definisci una regola di altezza diversa per il corpo della tabella
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Reimposta la formattazione dei caratteri.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Costruisci le altre celle.
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";

// Salva il documento su disco.
doc->Save(outputPath);

3) Inserisci la tabella nidificata in DOCX con Document Builder utilizzando C++

A volte abbiamo bisogno di un’altra tabella all’interno di una tabella esistente. Ad esempio, una cella in una riga o colonna di una tabella può contenere una sottotabella per una sottocategoria o qualche altro campo. In tali scenari, le tabelle nidificate sono utili che possono essere aggiunte seguendo i passaggi seguenti:

  1. Costruisci la Table esterna e quindi chiama il metodo EndTable.
  2. Costruisci la tabella interna all’interno di una cella della tabella esterna
  3. Salva il documento word di output

Il frammento di codice seguente mostra come inserire una tabella nidificata nel documento di Word usando C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Costruisci il tavolo esterno.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// Questa chiamata è importante per creare una tabella annidata all'interno della prima tabella
// Senza questa chiamata le celle inserite di seguito verranno aggiunte alla tabella esterna.
builder->EndTable();

// Passa alla prima cella della tabella esterna.
builder->MoveTo(cell->get_FirstParagraph());

// Costruisci il tavolo interno.
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";

// Salva il documento su disco.
doc->Save(outputPath);

Conclusione

Per riassumere, abbiamo imparato come inserire tabelle diverse nei documenti di Word utilizzando approcci diversi. Puoi inserire tabelle semplici o con stringa HTML così come le tabelle formattate e annidate nei documenti word (DOC/DOCX). Tuttavia, in caso di confusione o domanda, puoi contattarci su Forum di supporto gratuito. Inoltre, puoi anche fare riferimento a Riferimenti API e Documentazione del prodotto per il tuo gentile riferimento.

Guarda anche