Tabellen sind hilfreich, um Informationen und Zahlen zu organisieren. Wir fügen häufig Tabellen in Word Dokumente (DOCX/DOC) ein, um Informationen anzuzeigen. In einer Textverarbeitungsanwendung können Sie mit C++ problemlos Tabellen erstellen. Sie können die folgenden Beispiele durchgehen, um die Arbeit mit Tabellen in Word Dokumenten zu lernen:

Lassen Sie uns fortfahren, all diese Themen im Detail zu untersuchen:

Tabellen in die Word Dokumente-API einfügen

Beachten Sie zunächst, dass Sie die API Aspose.Words for C++ verwenden, um Tabellen in ein Word Dokument einzufügen. Sie können die API konfigurieren, indem Sie sie von New Releases oder über die NuGet-Galerie herunterladen. Nach der richtigen Konfiguration können Sie einfach die von der API bereitgestellten Methoden, Eigenschaften und Klassen verwenden, sodass einige einfache API-Aufrufe zum Erstellen, Bearbeiten oder Manipulieren von Microsoft Word Dokumenten wie DOCX oder DOC Dateien verwendet werden können.

Fügen Sie mit C++ eine Tabelle in Word Dokumente ein

Sie können mit wenigen einfachen Schritten eine Tabelle in Word Dokumente einfügen. Hierbei ist jedoch wichtig zu beachten, dass Sie das Dokumentobjekt an den Konstruktor jedes Knotens übergeben müssen, damit alle untergeordneten Knoten zum selben Objekt gehören. Sie müssen die unten aufgeführten Schritte ausführen:

  1. Objekt der Klasse Document initialisieren
  2. Objekt Tabelle erstellen
  3. Fügen Sie die Tabelle dem Dokument hinzu
  4. Erstellen Sie Zeilen und Spalten
  5. Wenden Sie AutoFit auf Tabellenzellen an
  6. Speichern Sie das ausgegebene Word Dokument

Das folgende code snippet zeigt, wie Sie mit C++ eine Tabelle in ein Word Dokument (DOCX/DOC) einfügen:

// Der Pfad zum Dokumentenverzeichnis.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Wir beginnen mit der Erstellung des Tabellenobjekts. Beachten Sie, wie wir das Dokumentobjekt übergeben müssen
// An den Konstruktor jedes Knotens. Dies liegt daran, dass jeder von uns erstellte Knoten dazugehören muss
// Zu irgendeinem Dokument.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Fügen Sie die Tabelle dem Dokument hinzu.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Hier könnten wir CertainMinimum aufrufen, um die Zeilen und Zellen für uns zu erstellen. Diese Methode wird verwendet
// Um sicherzustellen, dass der angegebene Knoten gültig ist, sollte in diesem Fall eine gültige Tabelle mindestens einen haben
// Zeile und eine Zelle, daher erstellt diese Methode sie für uns.
// Stattdessen übernehmen wir die Erstellung der Zeile und Tabelle selbst. Dies wäre der beste Weg, dies zu tun
// Wenn wir zum Beispiel eine Tabelle in einem Algorithmus erstellen würden.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

// Wir können jetzt alle Auto-Fit-Einstellungen anwenden.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);

// Erstellen Sie eine Zelle und fügen Sie sie der Zeile hinzu
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);

// Fügen Sie der Zelle einen Absatz sowie einen neuen Lauf mit etwas Text hinzu.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

// Fügen Sie die Zelle der Zeile hinzu.
row->AppendChild(cell);

// Wir würden dann den Vorgang für die anderen Zellen und Zeilen in der Tabelle wiederholen.
// Wir können die Dinge auch beschleunigen, indem wir vorhandene Zellen und Zeilen klonen.
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";

// Speichern Sie das Dokument auf der Festplatte.
doc->Save(outputPath);

Tabellen aus HTML in Word Dokumente mit C++ einfügen

Es ist möglich, dass eine HTML Datei eine Tabelle enthält, die Sie in Ihre Word Dokumente wie DOCX, DOC usw. einfügen müssen. Oder Sie müssen möglicherweise eine Tabelle von einer Website kopieren. Anstatt also die Tabelle von Grund auf neu zu erstellen und zu gestalten, können Sie HTML-Markup einfach als Tabelle in ein Word Dokument parsen. Beispielsweise können Sie mit der folgenden HTML-Zeichenfolge eine Tabelle in ein Word Dokument einfügen:

<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>

Wir haben den Inhalt einfach gehalten, damit die Unterstützung für Tabellen-Tags mit einfachen, aber wichtigen Anwendungsfällen demonstriert werden kann. Außerdem ist hier zu beachten, dass AutoFit nicht auf Tabellen angewendet werden kann, die aus HTML erstellt wurden.

Lassen Sie uns die folgenden Schritte ausführen, um eine HTML-Tabelle in ein Word Dokument einzufügen:

  1. Initialisiert eine Instanz der Klasse Document.
  2. Übergeben Sie das HTML-Markup mit der methode InsertHtml.
  3. Speichern Sie die ausgegebene DOCX-Word Datei

Der folgende Code folgt diesen Schritten und zeigt, wie man eine Tabelle in einem Word Dokument mit HTML mit C++ erstellt:

// Der Pfad zum Dokumentenverzeichnis.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Fügen Sie die Tabelle aus HTML ein. Beachten Sie, dass AutoFitSettings nicht für Tabellen gilt
// Aus HTML eingefügt.
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";
// Speichern Sie das Dokument auf der Festplatte.
doc->Save(outputPath);

Sie können feststellen, dass diese Methode etwas einfacher ist als der Ansatz, den wir oben untersucht haben. Der Grund dafür ist, dass Sie nicht jeden Knoten einzeln für die Zeilen, Spalten oder Zellen hinzufügen müssen, da das Table-Tag in der HTML-Zeichenfolge alle Informationen enthält. Es folgt ein Screenshot dieser einfachen HTML-Tabelle, die dem Word Dokument hinzugefügt wurde:

Tabelle in Word einfügen

Tabelle mit Document Builder in C++ einfügen

Das Beste an Aspose.Words for C++ API ist, dass es eine Vielzahl von Funktionen bietet, die zu einem Wettbewerbsvorteil für die API werden und sie von anderen Optionen abheben. Ebenso ist die Funktion des Einfügens von Tabellen mit einem Document Builder ein weiterer Ansatz zum Hinzufügen von Tabellen in Word Dokumenten (DOC/DOCX). Lassen Sie uns also die Details aus drei verschiedenen Perspektiven untersuchen:

1) Einfache Tabelle in DOCX mit Document Builder unter Verwendung von C++ einfügen

Um eine einfache Tabelle in einem Word Dokument mit Document Builder hinzuzufügen, müssen Sie die folgenden Schritte ausführen:

  1. Objekt Document erstellen
  2. Rufen Sie die Methode StartTable() auf und fügen Sie Zellen ein
  3. Fügen Sie die Zeile und die Zellen hinzu
  4. Speichern Sie die ausgegebene DOCX Datei

Darüber hinaus zeigt das folgende code snippet, wie man mit C++ eine einfache Tabelle in eine DOCX Datei einfügt:

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

// Wir rufen diese Methode auf, um mit dem Erstellen der Tabelle zu beginnen.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// Baue die zweite Zelle
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Rufen Sie die folgende Methode auf, um die Zeile zu beenden und eine neue Zeile zu beginnen.
builder->EndRow();

// Baue die erste Zelle der zweiten Reihe.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// Baue die zweite Zelle.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Signalisieren Sie, dass wir die Erstellung der Tabelle abgeschlossen haben.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Speichern Sie das Dokument auf der Festplatte.
doc->Save(outputPath);

2) Formatierte Tabelle in DOCX mit Document Builder unter Verwendung von C++ einfügen

Mit den folgenden Schritten können Sie eine formatierte Tabelle in ein Word Dokument einfügen:

  1. Initialisieren Sie eine Instanz der Klasse Document.
  2. Kopfzeile erstellen
  3. Legen Sie Einzüge und Merkmale für die Formatierung fest
  4. Schriftformatierung zurücksetzen
  5. Speichern Sie die ausgegebene Word DOCX Datei

Das folgende code snippet erstellt eine formatierte Tabelle in einer DOCX Datei mit C++:

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

// Machen Sie die Kopfzeile.
builder->InsertCell();

// Legen Sie den linken Einzug für die Tabelle fest. Danach muss eine tabellenweite Formatierung angewendet werden
// Mindestens eine Zeile ist in der Tabelle vorhanden.
table->set_LeftIndent(20.0);

// Legen Sie die Höhe fest und definieren Sie die Höhenregel für die Kopfzeile.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Einige Besonderheiten für die Kopfzeile.
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");

// Wir müssen die Breite dieser Zelle nicht angeben, da sie von der vorherigen Zelle geerbt wird.
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();

// Legen Sie Funktionen für die anderen Zeilen und Zellen fest.
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);

// Höhe zurücksetzen und eine andere Höhenregel für den Tabellenkörper definieren
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Schriftformatierung zurücksetzen.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Baue die anderen Zellen.
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";

// Speichern Sie das Dokument auf der Festplatte.
doc->Save(outputPath);

3) Einfügen einer verschachtelten Tabelle in DOCX mit Document Builder unter Verwendung von C++

Manchmal brauchen wir eine andere Tabelle innerhalb einer bestehenden Tabelle. Beispielsweise kann eine Zelle in einer Zeile oder Spalte einer Tabelle eine Untertabelle für eine Unterkategorie oder ein anderes Feld enthalten. In solchen Szenarien sind verschachtelte Tabellen hilfreich, die mit den folgenden Schritten hinzugefügt werden können:

  1. Erstellen Sie äußere Table und rufen Sie dann die methode EndTable auf
  2. Erstellen Sie eine innere Tabelle in einer Zelle der äußeren Tabelle
  3. Speichern Sie das ausgegebene Word Dokument

Das folgende code snippet zeigt, wie Sie mit C++ eine verschachtelte Tabelle in ein Word Dokument einfügen:

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

// Baue den äußeren Tisch.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// Dieser Aufruf ist wichtig, um innerhalb der ersten Tabelle eine verschachtelte Tabelle zu erstellen
// Ohne diesen Aufruf werden die unten eingefügten Zellen an die äußere Tabelle angehängt.
builder->EndTable();

// Wechseln Sie zur ersten Zelle der äußeren Tabelle.
builder->MoveTo(cell->get_FirstParagraph());

// Baue den inneren Tisch.
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";

// Speichern Sie das Dokument auf der Festplatte.
doc->Save(outputPath);

Fazit

Zusammenfassend haben wir gelernt, wie man verschiedene Tabellen mit unterschiedlichen Ansätzen in Word Dokumente einfügt. Sie können einfache Tabellen oder mit HTML String sowie die formatierten und verschachtelten Tabellen in die Word Dokumente (DOC/DOCX) einfügen. Im Falle von Unklarheiten oder Fragen können Sie sich jedoch unter Kostenlose Support-Foren an uns wenden. Darüber hinaus können Sie auch auf API-Referenzen und Produktdokumentation für Ihre freundliche Referenz verweisen.

Siehe auch