PowerPoint Tablolarında Satır ve Sütunları C++ ile Yönetme

Giriş

PowerPoint sunumunda bir tablonun satırlarını ve sütunlarını yönetebilmeniz için, Aspose.Slides Table sınıfını, ITable arayüzünü ve birçok başka türü sağlar.

İlk Satırı Başlık Olarak Ayarlama

  1. Bir Presentation sınıfının bir örneğini oluşturun ve sunumu yükleyin.
  2. Slaytın referansını dizini aracılığıyla alın.
  3. Bir ITable nesnesi oluşturun ve onu null olarak ayarlayın.
  4. İlgili tabloyu bulmak için tüm IShape nesneleri üzerinde döngü yapın.
  5. Tablonun ilk satırını başlık olarak ayarlayın.

Bu C++ kodu, bir tablonun ilk satırını başlık olarak nasıl ayarlayacağınızı gösterir:

// Presentation sınıfını örnekler 
auto pres = System::MakeObject<Presentation>(u"table.pptx");

// İlk slayta erişir
auto sld = pres->get_Slides()->idx_get(0);

// null TableEx'i başlatır
SharedPtr<ITable> tbl;

// Şekiller üzerinde döner ve tabloya bir referans ayarlar
for (const auto& shp : sld->get_Shapes())
{
    if (ObjectExt::Is<ITable>(shp))
    {
        tbl = System::ExplicitCast<ITable>(shp);
    }
}

// Bir tablonun ilk satırını başlık olarak ayarlar 
tbl->set_FirstRow(true);

Bir Tablo Satırını veya Sütununu Kopyalama

  1. Bir Presentation sınıfının bir örneğini oluşturun ve sunumu yükleyin,
  2. Slaytın referansını dizini aracılığıyla alın.
  3. columnWidth dizisini tanımlayın.
  4. rowHeight dizisini tanımlayın.
  5. AddTable() yöntemiyle slayda bir ITable nesnesi ekleyin.
  6. Tablo satırını kopyalayın.
  7. Tablo sütununu kopyalayın.
  8. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu, bir PowerPoint tablosunun satırını veya sütununu nasıl kopyalayacağınızı gösterir:

 // Belgeler dizinine yol.
const String outPath = u"../out/CloningInTable_out.pptx";

// Presentation sınıfını örnekler
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// İlk slayta erişir
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Slayta bir tablo şekli ekler
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);


// Her hücre için kenar biçimini ayarlar
for (int x = 0; x < table->get_Rows()->get_Count(); x++)
{
	SharedPtr<IRow> row = table->get_Rows()->idx_get(x);
	for (int y = 0; y < row->get_Count(); y++)
	{
		SharedPtr<ICell> cell = row->idx_get(y);

		cell->get_BorderTop()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderTop()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderTop()->set_Width(5);

		cell->get_BorderBottom()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderBottom()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderBottom()->set_Width(5);

		cell->get_BorderLeft()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderLeft()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderLeft()->set_Width(5);

		cell->get_BorderRight()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderRight()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderRight()->set_Width(5);

	}

}

table->idx_get(0, 0)->get_TextFrame()->set_Text(u"00");
table->idx_get(0, 1)->get_TextFrame()->set_Text(u"01");
table->idx_get(0, 2)->get_TextFrame()->set_Text(u"02");
table->idx_get(0, 3)->get_TextFrame()->set_Text(u"03");
table->idx_get(1, 0)->get_TextFrame()->set_Text(u"10");
table->idx_get(2, 0)->get_TextFrame()->set_Text(u"20");
table->idx_get(1, 1)->get_TextFrame()->set_Text(u"11");
table->idx_get(2, 1)->get_TextFrame()->set_Text(u"21");

//AddClone tablo sonuna bir satır ekler
table->get_Rows()->AddClone(table->get_Rows()->idx_get(0), false);

//InsertClone tablo içinde belirli bir konuma satır ekler
table->get_Rows()->InsertClone(2, table->get_Rows()->idx_get(0), false);

//AddClone tablo sonuna bir sütun ekler
table->get_Columns()->AddClone(table->get_Columns()->idx_get(0), false);

//InsertClone tablo içinde belirli bir konuma sütun ekler
table->get_Columns()->InsertClone(2, table->get_Columns()->idx_get(0), false);


// Sunumu diske kaydeder
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);


Tablodan Bir Satır veya Sütun Kaldırma

  1. Bir Presentation sınıfının bir örneğini oluşturun ve sunumu yükleyin,
  2. Slaytın referansını dizini aracılığıyla alın.
  3. columnWidth dizisini tanımlayın.
  4. rowHeight dizisini tanımlayın.
  5. AddTable() yöntemiyle slayda bir ITable nesnesi ekleyin.
  6. Tablo satırını kaldırın.
  7. Tablo sütununu kaldırın.
  8. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu, bir tablodan satır veya sütun nasıl kaldırılacağını gösterir:

// Belgeler dizinine yol.
const String outPath = u"../out/RemovingRowColumn_out.pptx";

// Presentation sınıfını örnekler
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// İlk slayta erişir
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Sütunları genişlikleri ve satırları yükseklikleri ile tanımlar
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Slayta bir tablo şekli ekler
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);

table->get_Rows()->RemoveAt(1, false);
table->get_Columns()->RemoveAt(1, false);


// Hücreleri (1, 1) x (2, 1) birleştirir
table->MergeCells(table->idx_get(1, 1), table->idx_get(2, 1), false);

// Hücreleri (1, 2) x (2, 2) birleştirir
table->MergeCells(table->idx_get(1, 2), table->idx_get(2, 2), false);


// Sunumu diske kaydeder
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);


Tablo Satırı Düzeyinde Metin Biçimlendirmesini Ayarlama

  1. Bir Presentation sınıfının bir örneğini oluşturun ve sunumu yükleyin,
  2. Slaytın referansını dizini aracılığıyla alın.
  3. Slayttan ilgili ITable nesnesine erişin.
  4. İlk satır hücrelerinin set_FontHeight() metodunu ayarlayın.
  5. İlk satır hücrelerinin set_Alignment() ve set_MarginRight() metodlarını ayarlayın.
  6. İkinci satır hücrelerinin set_TextVerticalType() metodunu ayarlayın.
  7. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu işlemi gösterir.

// Presentation sınıfının bir örneğini oluşturur
auto presentation = System::MakeObject<Presentation>();

auto slide = presentation->get_Slides()->idx_get(0);

auto someTable = System::AsCast<ITable>(presentation->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0));
// İlk slayttaki ilk şeklin bir tablo olduğunu varsayalım
// İlk satır hücrelerinin yazı tipi yüksekliğini ayarlar
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(portionFormat);

// İlk satır hücrelerinin metin hizalamasını ve sağ kenar boşluğunu ayarlar
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Rows()->idx_get(0)->SetTextFormat(paragraphFormat);

// İkinci satır hücrelerinin metin dikey tipini ayarlar
auto textFrameFormat = System::MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
someTable->get_Rows()->idx_get(1)->SetTextFormat(textFrameFormat);

// Sunumu diske kaydeder
presentation->Save(u"result.pptx", SaveFormat::Pptx);

Tablo Sütun Düzeyinde Metin Biçimlendirmesini Ayarlama

  1. Bir Presentation sınıfının bir örneğini oluşturun ve sunumu yükleyin,
  2. Slaytın referansını dizini aracılığıyla alın.
  3. Slayttan ilgili ITable nesnesine erişin.
  4. İlk sütun hücrelerinin set_FontHeight() metodunu ayarlayın.
  5. İlk sütun hücrelerinin set_Alignment() ve set_MarginRight() metodlarını ayarlayın.
  6. İkinci sütun hücrelerinin set_TextVerticalType() metodunu ayarlayın.
  7. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu işlemi gösterir:

// Presentation sınıfının bir örneğini oluşturur
auto pres = System::MakeObject<Presentation>();

auto slide = pres->get_Slides()->idx_get(0);

auto someTable = System::AsCast<ITable>(pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0));
// İlk slayttaki ilk şeklin bir tablo olduğunu varsayalım

// İlk sütun hücrelerinin yazı tipi yüksekliğini ayarlar
auto portionFormat = System::MakeObject<PortionFormat>();
portionFormat->set_FontHeight(25.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(portionFormat);

// İlk sütun hücrelerinin metin hizalamasını ve sağ kenar boşluğunu tek bir çağrıda ayarlar
auto paragraphFormat = System::MakeObject<ParagraphFormat>();
paragraphFormat->set_Alignment(TextAlignment::Right);
paragraphFormat->set_MarginRight(20.0f);
someTable->get_Columns()->idx_get(0)->SetTextFormat(paragraphFormat);

// İkinci sütun hücrelerinin metin dikey tipini ayarlar
auto textFrameFormat = System::MakeObject<TextFrameFormat>();
textFrameFormat->set_TextVerticalType(TextVerticalType::Vertical);
someTable->get_Columns()->idx_get(1)->SetTextFormat(textFrameFormat);

pres->Save(u"result.pptx", SaveFormat::Pptx);

Tablo Stil Özelliklerini Alma

Aspose.Slides, bir tablo için stil özelliklerini almanıza olanak tanır, böylece bu ayrıntıları başka bir tabloya veya başka bir yere uygulayabilirsiniz. Bu C++ kodu, bir tablo ön ayar stilinden stil özelliklerini nasıl alacağınızı gösterir:

auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slide(0)->get_Shapes();
auto table = System::ExplicitCast<ITable>(shapes->AddTable(10, 10, System::MakeArray<double>({100, 150}), System::MakeArray<double>({5, 5, 5})));

table->set_StylePreset(TableStylePreset::DarkStyle1);
pres->Save(u"table.pptx", SaveFormat::Pptx);

SSS

Varolan bir tabloya PowerPoint tema/ stillerini uygulayabilir miyim?

Evet. Tablo, slayt/düzen/ana tema (master) teması miras alır ve bu temanın üzerine dolgu, kenarlık ve metin renklerini hâlâ geçersiz kılabilirsiniz.

Tablo satırlarını Excel’deki gibi sıralayabilir miyim?

Hayır, Aspose.Slides tablolarının yerleşik sıralama veya filtreleme özelliği yoktur. Verilerinizi önce bellekte sıralayın, ardından tablo satırlarını bu sırayla yeniden doldurun.

Belirli hücrelerde özel renkleri korurken çizgili (stripe) sütunlar elde edebilir miyim?

Evet. Çizgili sütunları etkinleştirin, ardından belirli hücreleri yerel biçimlendirme ile geçersiz kılın; hücre düzeyindeki biçimlendirme tablo stiline göre önceliklidir.