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
- C++ kullanarak bir Excel Dosyasında Pivot Tablo Oluşturma
- C++ kullanarak bir Excel Dosyasında Pivot Tabloyu Sıralama
- C++ kullanarak Pivot Tablodaki Satırları Gizleyin
- C++ kullanarak Pivot Tablo Verilerini Yönetin
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.
- İlk olarak, yeni Excel dosyasını temsil etmesi için IWorkbook sınıfının bir örneğini oluşturun.
- IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) yöntemini kullanarak pivot tabloyu eklemek istediğiniz çalışma sayfasına erişin.
- Pivot tablo için örnek veriler ekleyin.
- IWorksheet->GetIPivotTables()->Add(intrusiveptr) kullanarak pivot tablo ekleyinAspose::Cells::Systems::String kaynakVeri, müdahaleciAspose::Cells::Systems::String destCellName, müdahaleci noktaAspose::Cells::Systems::String tabloAdı) yöntemi.
- Pivot tabloya erişmek için IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) yöntemini kullanın.
- Alanları değiştirin ve pivot tablonun stilini ayarlayın.
- Son olarak, Excel dosyasını IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String dosyaAdı) yöntemi.
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")));
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.
- İlk olarak, IWorkbook sınıfını kullanarak örnek Excel dosyasını yükleyin.
- IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) yöntemini kullanarak pivot tabloyu içeren çalışma sayfasını alın.
- Pivot tabloya IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) yöntemini kullanarak erişin.
- Satır alanını alın ve IPivotField->SetAutoSort(bool value) ve IPivotField->SetAscendSort(bool value) yöntemlerini kullanarak pivot tabloyu sıralayın.
- Pivot tablonun içeriğini yenileyin ve sırasıyla IPivotTable->RefreshData() ve IPivotTable->CalculateData() yöntemlerini kullanarak verileri hesaplayın.
- Son olarak, Excel dosyasını IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String dosyaAdı) yöntemi.
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);
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.
- İlk olarak, IWorkbook sınıfını kullanarak örnek Excel dosyasını yükleyin.
- IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) yöntemini kullanarak pivot tabloyu içeren çalışma sayfasını alın.
- Pivot tabloya IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) yöntemini kullanarak erişin.
- IPivotTable->GetIDataBodyRange() yöntemini kullanarak pivot tablo veri gövdesi aralığını alın.
- Pivot tablonun satırlarını yineleyin ve kriterlerinize uyan satırları gizleyin.
- Pivot tablonun içeriğini yenileyin ve sırasıyla IPivotTable->RefreshData() ve IPivotTable->CalculateData() yöntemlerini kullanarak verileri hesaplayın.
- Son olarak, Excel dosyasını IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String dosyaAdı) yöntemi.
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);
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.
- İlk olarak, IWorkbook sınıfını kullanarak örnek Excel dosyasını yükleyin.
- IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) yöntemini kullanarak pivot tablo verilerini içeren çalışma sayfasını alın.
- Pivot tablonun verilerini gereksinimlerinize göre güncelleyin.
- Pivot tabloya erişmek için IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) yöntemini kullanın.
- Pivot tablonun içeriğini yenileyin ve sırasıyla IPivotTable->RefreshData() ve IPivotTable->CalculateData() yöntemlerini kullanarak verileri hesaplayın.
- Son olarak, Excel dosyasını IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String dosyaAdı) yöntemi.
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);
Ü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.