Tablolar, bilgileri ve şekilleri düzenlemeye yardımcı olur. Bilgileri göstermek için genellikle kelime belgelerine (DOCX/DOC) tablolar ekleriz. Bir kelime işlemci uygulamasında, C++ kullanarak kolayca tablolar oluşturabilirsiniz. Word belgelerinde Tablolarla çalışmayı öğrenmek için aşağıdaki örnekleri inceleyebilirsiniz:

Tüm bu konuları ayrıntılı olarak incelemeye devam edelim:

Word Belgeleri API’sine Tablo Ekleme

Öncelikle, bir word belgesine tablo eklemek için Aspose.Words for C++ API’sini kullanacağınızı lütfen unutmayın. API’yi Yeni Sürümler’ten indirerek veya NuGet galerisi aracılığıyla yapılandırabilirsiniz. Düzgün bir şekilde yapılandırıldıktan sonra, API tarafından sunulan yöntemleri, özellikleri ve sınıfları kolayca kullanabilirsiniz, böylece DOCX veya DOC dosyaları gibi Microsoft Word belgelerini oluşturmak, düzenlemek veya değiştirmek için birkaç basit API çağrısı kullanılabilir.

C++ kullanarak Word Belgelerine Tablo Ekleme

Birkaç basit adımla word belgelerine tablo ekleyebilirsiniz. Ancak burada, tüm alt düğümlerin aynı nesneye ait olması için belge nesnesini her düğümün yapıcısına iletmeniz gerektiğine dikkat etmek önemlidir. Aşağıda listelenen adımları izlemeniz gerekir:

  1. Document sınıfının nesnesini başlat
  2. Tablo nesnesi oluştur
  3. Tabloyu Belgeye Ekle
  4. Satırlar ve Sütunlar Oluşturun
  5. Tablo Hücrelerine AutoFit uygulayın
  6. Çıktı Word Belgesini Kaydet

Aşağıdaki kod parçacığı, C++ kullanarak Word belgesine (DOCX/DOC) bir Tablonun nasıl ekleneceğini gösterir:

// Belgeler dizininin yolu.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Tablo nesnesini oluşturarak başlıyoruz. Belge nesnesini nasıl geçirmemiz gerektiğine dikkat edin
// Her düğümün yapıcısına. Bunun nedeni, oluşturduğumuz her düğümün ait olması gerektiğidir.
// Bazı belgelere.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Tabloyu belgeye ekleyin.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Burada bizim için satırları ve hücreleri oluşturmak için SureMinimum'u çağırabiliriz. Bu yöntem kullanılır
// Belirtilen düğümün geçerli olduğundan emin olmak için, bu durumda geçerli bir tablonun en az bir tane olması gerekir.
// Satır ve bir hücre, bu nedenle bu yöntem onları bizim için oluşturur.
// Bunun yerine satır ve tabloyu kendimiz oluşturacağız. Bunu yapmanın en iyi yolu bu olurdu
// Örneğin bir algoritmanın içinde bir tablo oluşturuyor olsaydık.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

// Artık herhangi bir otomatik sığdırma ayarını uygulayabiliriz.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);

// Bir hücre oluşturun ve satıra ekleyin
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);

// Hücreye bir paragrafın yanı sıra bazı metinlerle yeni bir çalışma ekleyin.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

// Hücreyi satıra ekleyin.
row->AppendChild(cell);

// Daha sonra tablodaki diğer hücreler ve satırlar için işlemi tekrar ederdik.
// Mevcut hücreleri ve satırları klonlayarak da işleri hızlandırabiliriz.
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";

// Belgeyi diske kaydedin.
doc->Save(outputPath);

C++ kullanarak Word Belgelerinde HTML’den Tablo Ekleme

Bir HTML dosyasının DOCX, DOC vb. kelime belgelerinize eklemeniz gereken Tablo içermesi mümkündür. Veya bir web sitesinden tablo kopyalamanız gerekebilir. Böylece tabloyu sıfırdan oluşturmak ve tasarlamak yerine, HTML işaretlemesini bir tablo olarak kolayca word belgesine ayrıştırabilirsiniz. Örneğin, aşağıdaki HTML dizesini kullanarak word belgesine bir tablo ekleyebilirsiniz:

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

Tablo etiketi desteğinin temel ancak önemli kullanım durumuyla gösterilebilmesi için içeriği basit tuttuk. Ayrıca, AutoFit’in HTML’den oluşturulan tablolara uygulanamayacağını burada belirtmek önemlidir.

Word belgesine HTML tablosu eklemek için aşağıdaki adımları izleyelim:

  1. Document sınıfının bir örneğini başlat
  2. HTML işaretlemesini InsertHtml yöntemiyle iletin
  3. Çıktı DOCX kelime dosyasını kaydet

Aşağıdaki kod, bu adımları izler ve C++ kullanarak HTML ile Word belgesinde nasıl tablo oluşturulacağını gösterir:

// Belgeler dizininin yolu.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Tabloyu HTML'den ekleyin. AutoFitSettings'in tablolara uygulanmadığını unutmayın.
// HTML'den eklendi.
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";
// Belgeyi diske kaydedin.
doc->Save(outputPath);

Bu yöntemin yukarıda incelediğimiz yaklaşımdan biraz daha basit olduğunu fark edebilirsiniz. Bunun nedeni, satırlar, sütunlar veya hücreler için her düğümü tek tek eklemenize gerek olmamasıdır çünkü HTML dizesindeki Tablo etiketi tüm bilgileri içerir. Aşağıda, Word belgesine eklenen bu basit HTML tablosunun ekran görüntüsü verilmiştir:

Word'de Tablo Ekle

C++‘da Document Builder Kullanarak Tablo Ekleme

Aspose.Words for C++ API ile ilgili en iyi şey, API için rekabet avantajı haline gelen ve onu diğer seçenekler arasında öne çıkaran çeşitli özellikler sunmasıdır. Aynı şekilde, bir belge oluşturucu kullanarak tablo ekleme özelliği, kelime belgelerine (DOC/DOCX) tablo eklemeye yönelik başka bir yaklaşımdır. Öyleyse ayrıntıları üç farklı açıdan inceleyelim:

1) C++ kullanarak Document Builder ile DOCX’e Basit Tablo Ekleme

Belge oluşturucu ile word belgesine basit bir tablo eklemek için aşağıdaki adımları izlemeniz gerekir:

  1. Belge Nesnesi Oluşturun
  2. StartTable() yöntemini çağırın ve hücreleri ekleyin
  3. Satır ve Hücreleri Ekleme
  4. Çıkış DOCX dosyasını kaydet

Ayrıca, aşağıdaki kod parçacığı, C++ ile DOCX dosyasına basit tablonun nasıl ekleneceğini gösterir:

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

// Tabloyu oluşturmaya başlamak için bu yöntemi çağırıyoruz.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// İkinci hücreyi oluştur
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// Satırı bitirmek ve yeni bir satır başlatmak için aşağıdaki yöntemi çağırın.
builder->EndRow();

// İkinci satırın ilk hücresini oluşturun.
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// İkinci hücreyi oluştur.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// Tabloyu oluşturmayı bitirdiğimizin işareti.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Belgeyi diske kaydedin.
doc->Save(outputPath);

2) C++ kullanarak Document Builder ile DOCX’e Biçimlendirilmiş Tablo Ekleme

Aşağıdaki adımlarla biçimlendirilmiş bir tabloyu bir word belgesine ekleyebilirsiniz:

  1. Document sınıfının bir örneğini başlat
  2. Başlık Satırı Yap
  3. Biçimlendirme için girintileri ve özellikleri ayarlayın
  4. Yazı tipi biçimlendirmesini sıfırla
  5. Çıktı Word DOCX dosyasını kaydet

Aşağıdaki kod parçacığı, C++ kullanarak DOCX dosyasında biçimlendirilmiş tablo oluşturur:

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

// Başlık satırını yapın.
builder->InsertCell();

// Tablo için sol girintiyi ayarlayın. Tablo genişliğinde biçimlendirme şu tarihten sonra uygulanmalıdır:
// Tabloda en az bir satır var.
table->set_LeftIndent(20.0);

// Yüksekliği ayarlayın ve başlık satırı için yükseklik kuralını tanımlayın.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Başlık satırı için bazı özel özellikler.
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");

// Bir önceki hücreden miras kaldığı için bu hücrenin genişliğini belirtmemize gerek yok.
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();

// Diğer satırlar ve hücreler için özellikleri ayarlayın.
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);

// Yüksekliği sıfırlayın ve tablo gövdesi için farklı bir yükseklik kuralı tanımlayın
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Yazı tipi biçimlendirmesini sıfırlayın.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Diğer hücreleri oluşturun.
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";

// Belgeyi diske kaydedin.
doc->Save(outputPath);

3) C++ kullanarak Document Builder ile DOCX’e İç İçe Tablo Ekleme

Bazen mevcut bir tablonun içinde başka bir tabloya ihtiyaç duyarız. Örneğin, bir tablonun herhangi bir satırındaki veya sütunundaki bir hücre, bir alt kategori veya başka bir alan için bir alt tablo içerebilir. Bu tür senaryolarda, aşağıdaki adımlar izlenerek eklenebilen İç içe tablolar yardımcı olur:

  1. Dış Table oluşturun ve ardından EndTable yöntemini çağırın
  2. Dış tablonun bir hücresinin içine iç Tablo oluşturun
  3. Çıktı kelime belgesini kaydet

Aşağıdaki kod parçacığı, C++ kullanarak Word belgesine iç içe geçmiş tablonun nasıl ekleneceğini gösterir:

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

// Dış tabloyu oluşturun.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// Bu çağrı, ilk tablo içinde iç içe geçmiş bir tablo oluşturmak için önemlidir.
// Bu çağrı olmadan, aşağıya eklenen hücreler dış tabloya eklenir.
builder->EndTable();

// Dış tablonun ilk hücresine git.
builder->MoveTo(cell->get_FirstParagraph());

// İç tabloyu oluşturun.
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";

// Belgeyi diske kaydedin.
doc->Save(outputPath);

Çözüm

Özetlemek gerekirse, farklı yaklaşımlar kullanarak Word belgelerine farklı tabloların nasıl ekleneceğini öğrendik. Word belgelerine (DOC/DOCX) basit tablo veya HTML dizesi ile biçimlendirilmiş ve iç içe geçmiş tablolar ekleyebilirsiniz. Ancak herhangi bir karışıklık veya soru olması durumunda bize Ücretsiz Destek Forumları adresinden ulaşabilirsiniz. Ayrıca, nazik referansınız için API Referansları ve Ürün Belgeleri’ne de başvurabilirsiniz.

Ayrıca bakınız