Pivot tablolar, verileri anlamlı bir şekilde temsil edecek şekilde yeniden düzenler. Farklı sıralama seçenekleri sunarlar ve verileri birlikte gruplayarak toplamlar, ortalamalar veya diğer istatistikleri sağlarlar. Veri analizi için önemli bir araçtır ve MS Excel’in temel bir parçasıdır. Kendinizi programlı olarak pivot tablolar oluşturmanız ve değiştirmeniz gereken senaryoların içinde bulabilirsiniz. Bu amaçla, bu makale size C++ kullanarak Excel dosyalarında pivot tablolarla nasıl çalışacağınızı öğretecektir.

Excel Dosyalarında Pivot Tablolarla Çalışmak için C++ API

Aspose.Cells for C++, Microsoft Excel’in yüklenmesini gerektirmeden Excel dosyaları oluşturmanıza, okumanıza ve güncellemenize olanak sağlayan yerel bir C++ kitaplığıdır. API, Excel dosyalarındaki pivot tablolarla çalışmayı da destekler. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan İndirilenler bölümünden indirebilirsiniz.

PM> Install-Package Aspose.Cells.Cpp

C++ kullanarak bir Excel Dosyasında Pivot Tablo Oluşturma

Aşağıdaki örnekte yeni bir Excel dosyası oluşturup içine örnek veriler ekleyeceğiz ve bir pivot tablo oluşturacağız. Bu örnekte oluşturulan dosya, diğer örnekler için kaynak dosya olarak kullanılacaktır. Bir Excel dosyasında pivot tablo oluşturma adımları aşağıdadır.

Aşağıdaki örnek kod, C++ kullanılarak bir Excel dosyasında özet tablonun nasıl oluşturulacağını gösterir.

// Kaynak dizin yolu.
StringPtr srcDir = new String("SourceDirectory\\");

// Çıkış dizini yolu.
StringPtr outDir = new String("OutputDirectory\\");

// IWorkbook sınıfının bir örneğini oluşturun
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// İlk çalışma sayfasına erişin
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Pivot tablo için kaynak verileri ekleyin
intrusive_ptr<String> str = new String("Fruit");
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(str);
str = new String("Quantity");
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(str);
str = new String("Price");
worksheet->GetICells()->GetObjectByIndex(new String("C1"))->PutValue(str);
str = new String("Apple");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(str);
str = new String("Mango");
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(str);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("C2"))->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(new String("C3"))->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(new String("C4"))->PutValue(4);

// Pivot tablo ekle
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));

// Oluşturulan pivot tabloya erişin
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);

// Pivot tablo satırlarını, sütunlarını ve veri alanlarını değiştirin
pivotTable->AddFieldToArea(PivotFieldType_Row, pivotTable->GetIBaseFields()->GetObjectByIndex(0));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(1));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(2));
pivotTable->AddFieldToArea(PivotFieldType_Column, pivotTable->GetIDataField());

// Pivot tablo stilini ayarlama
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);

// Çıktı excel dosyasını kaydedin
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
Örnek kod tarafından oluşturulan Pivot Tablonun görüntüsü

Örnek kod tarafından oluşturulan Pivot Tablonun görüntüsü

C++ kullanarak bir Excel Dosyasında Pivot Tabloyu Sıralama

Aşağıdaki örnekte, pivot tablonun ilk sütununu azalan düzende sıralayacağız. Aşağıda, bir pivot tablodaki verileri sıralama adımları yer almaktadır.

Aşağıdaki örnek kod, C++ kullanılarak bir Excel dosyasındaki bir pivot tablonun nasıl sıralanacağını gösterir.

// Kaynak dizin yolu.
StringPtr srcDir = new String("SourceDirectory\\");

// Çıkış dizini yolu.
StringPtr outDir = new String("OutputDirectory\\");

// Giriş excel dosyasının yolu
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// Çıktı excel dosyasının yolu
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));

// Örnek excel dosyasını yükleyin
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// İlk çalışma sayfasına erişin
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Pivot tabloya erişme
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// Pivot tablo sıralamasını ayarla
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);

// Pivot tablodaki verileri yenileyin ve hesaplayın.
pivotTable->RefreshData();
pivotTable->CalculateData();

// Çıktı excel dosyasını kaydedin
workbook->Save(outputSortedPivotTable);
Örnek kod tarafından oluşturulan sıralanmış Pivot Tablonun görüntüsü

Örnek kod tarafından oluşturulan sıralanmış Pivot Tablonun görüntüsü

C++ kullanarak Pivot Tablodaki Satırları Gizleyin

Aspose.Cells for C++ API ile bir pivot tablodaki satırları da gizleyebilirsiniz. Aşağıdaki örnekte, “Turuncu” satır etiketine sahip satırı gizleyeceğiz. Aşağıda, bir pivot tablodaki satırları gizleme adımları yer almaktadır.

Aşağıdaki örnek kod, C++ kullanılarak bir pivot tabloda satırların nasıl gizleneceğini gösterir.

// Kaynak dizin yolu.
StringPtr srcDir = new String("SourceDirectory\\");

// Çıkış dizini yolu.
StringPtr outDir = new String("OutputDirectory\\");

// Giriş excel dosyasının yolu
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// Çıktı excel dosyasının yolu
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));

// Örnek excel dosyasını yükleyin
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// İlk çalışma sayfasına erişin
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Pivot tabloya erişme
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// Pivot tablo gövde aralığını alın
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();

// Pivot tablo başlangıç satırı
int currentRow = 5;

// Pivot tablo bitiş satırı
int rowsUsed = dataBodyRange->GetendRow();

// Satırları yineleyin, hücre değerini karşılaştırın ve satırları gizleyin.
for (int i = currentRow; i < rowsUsed; i++) {
	intrusive_ptr<ICell> cell = worksheet->GetICells()->GetICell(i, 4);
	if (strcmp(cell->GetStringValue()->charValue(), "Orange") == 0) {
		worksheet->GetICells()->HideRow(i);
	}
}

// Pivot tablodaki verileri yenileyin ve hesaplayın.
pivotTable->RefreshData();
pivotTable->CalculateData();

// Çıktı excel dosyasını kaydedin
workbook->Save(outputHiddenRowPivotTable);
Gizli satır içeren pivot tablonun görüntüsü

Gizli satır içeren pivot tablonun resmi

C++ kullanarak Pivot Tablo Verilerini Yönetin

Aspose.Cells for C++ API kullanarak mevcut bir pivot tablonun verilerini de değiştirebilirsiniz. Aşağıdaki örnekte “A2” hücresindeki “Elma” metnini “Turuncu” ile değiştireceğiz ve değişikliği pivot tabloya yansıtacağız. Pivot tablo verilerini işlemek için gereken adımlar aşağıdadır.

Aşağıdaki örnek kod, C++ kullanılarak bir pivot tablonun verilerinin nasıl güncelleneceğini gösterir.

// Kaynak dizin yolu.
StringPtr srcDir = new String("SourceDirectory\\");

// Çıkış dizini yolu.
StringPtr outDir = new String("OutputDirectory\\");

// Giriş excel dosyasının yolu
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// Çıktı excel dosyasının yolu
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));

// Örnek excel dosyasını yükleyin
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// İlk çalışma sayfasına erişin
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Pivot tablonun kaynak verilerinin içindeki A2 hücresinin değerini değiştirin
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);

// Pivot tabloya erişin, yenileyin ve hesaplayın
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();

// Çıktı excel dosyasını kaydedin
workbook->Save(outputManipulatePivotTable);
Güncellenen verileri gösteren Özet Tablo

Güncellenen verileri gösteren Özet Tablo

Ücretsiz Lisans Alın

API’yi değerlendirme kısıtlamaları olmaksızın denemek için [ücretsiz bir geçici lisans] talep edebilirsiniz30.

Çözüm

Bu makalede, C++ kullanarak Excel dosyalarındaki pivot tablolarla nasıl çalışacağınızı öğrendiniz. Özellikle, C++ kullanarak bir pivot tablo oluşturmayı ve bir pivot tablodaki verileri sıralamayı, gizlemeyi ve güncellemeyi öğrendiniz. Aspose.Cells for C++, Excel dosyalarıyla çalışmak için bir dizi ek özellik sağlayan geniş bir API’dir. Resmi belgeleri ziyaret ederek API’yi ayrıntılı olarak inceleyebilirsiniz. Herhangi bir sorunuz olursa lütfen ücretsiz destek forumumuzdan bize ulaşmaktan çekinmeyin.

Ayrıca bakınız