C++ ile Excel Dosyaları Oluşturma

Daha önce, Excel otomasyon özelliklerinin nasıl uygulanacağı ve C# kullanarak sıfırdan Excel XLS/XLSX dosyalarının nasıl oluşturulacağı hakkında bir yazı yazmıştım. Bugün size C++ kullanarak Excel çalışma kitapları oluşturmayı, Excel çalışma sayfalarına veri eklemeyi, formülleri hesaplamayı ve çalışma sayfalarında grafikler ve tablolar oluşturmayı göstereceğim. Tüm elektronik tablo otomasyon özellikleri, C++ Excel API - Aspose.Cells for C++ tarafından desteklenecektir.

Aspose.Cells for C++, elektronik tablo belgelerini Microsoft Excel gerektirmeden oluşturmanıza, okumanıza, ayrıştırmanıza ve dönüştürmenize olanak tanıyan yerel bir C++ kitaplığıdır. XLS/XLSX elektronik tablolarını oluşturmak ve değiştirmek için kullanılabilecek eksiksiz bir Excel otomasyon özellikleri seti sağlar. Bu makalede, sıfırdan Excel XLS/XLSX dosyaları oluşturmaya ilişkin aşağıdaki özellikleri ele alacağız.

C++ Excel Elektronik Tablo API’si - Kurulum

Aspose.Cells for C++ kitaplık dosyalarının eksiksiz paketini İndirilenler bölümünden indirebilirsiniz. Paket ayrıca çalışmaya hazır bir örnek konsol uygulaması içerir.

C++ kullanarak Excel Dosyaları (XLS/XLSX) oluşturun

Önce sıfırdan basit bir Excel XLSX çalışma kitabı oluşturalım. Bir çalışma kitabı, bir veya birden çok çalışma sayfasından oluşur ve her çalışma sayfası, satırlar ve sütunlar biçimindeki verileri içerir. Bu nedenle, bir Excel elektronik tablosu oluşturmak için önce bir çalışma kitabı oluşturmanız ve ardından içine çalışma sayfaları eklemeniz gerekir. Aşağıda, Aspose.Cells for C++ kullanarak bir Excel dosyası oluşturma adımları yer almaktadır.

Aşağıdaki kod örneği, C++ kullanarak bir Excel XLSX dosyasının nasıl oluşturulacağını gösterir.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

excel çalışma kitabı

Aşağıda az önce oluşturduğumuz Excel çalışma kitabının ekran görüntüsü bulunmaktadır.

C++ ile Excel XLSX oluşturun

C++ kullanarak Excel Çalışma Sayfasına Veri Ekleme

Önceki örnekte, basit bir Excel dosyasının nasıl oluşturulacağını ve satır ve sütun indeksini kullanarak belirli bir hücreye nasıl değer ekleneceğini gördük. Bununla birlikte, çoğu zaman Excel çalışma sayfalarındaki hücreler, A1, A2, B1 vb. İşlem yalnızca hücreye değer eklemede farklılık gösterir ve Excel çalışma kitabını ve çalışma sayfalarını oluşturmanın diğer tüm adımları aynıdır.

Aşağıdaki kod örneği, bir Excel XLSX çalışma kitabının nasıl oluşturulacağını ve buna C++ kullanarak nasıl veri ekleneceğini gösterir.

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

//Giriş excel dosyasını oku
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Excel dosyasındaki ikinci çalışma sayfasına erişim
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Hücreye bir dize değeri ekleme
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Hücreye çift değer ekleme
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Hücreye bir tamsayı değeri ekleme
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Hücreye boole değeri ekleme
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Tarihin görüntülenme biçimini ayarlama
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//çalışma kitabını kaydet
workbook->Save(outputData);

C++ kullanarak Çalışma Kitabı Formüllerini Hesaplayın

Excel çalışma kitaplarında formül ayarlamak, veriler üzerinde hesaplamalar yapmak için harika bir özelliktir. Veriler üzerinde karmaşık hesaplamaları etkin ve verimli bir şekilde gerçekleştirmeyi oldukça kolaylaştırır. Excel çalışma sayfalarında formülleri ayarlama ve hesaplama adımları aşağıda verilmiştir.

Aşağıdaki kod örneği, C++ kullanarak bir Excel XLSX çalışma kitabında formüllerin nasıl ekleneceğini ve hesaplanacağını gösterir.

//Yeni bir çalışma kitabı oluştur
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Varsayılan olarak oluşturulan ilk çalışma sayfasını alın
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//"A1" hücresine değer ekleme
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//"A2" hücresine değer ekleme
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//"A3" hücresine değer ekleme
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//"A4" hücresine TOPLA formülü ekleme
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Formül sonuçlarının hesaplanması
wb->CalculateFormula();

//"A4" hücresinin hesaplanan değerini alın ve konsolda yazdırın
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

C++ kullanarak Excel Çalışma Sayfasında Tablolar Oluşturma

Excel çalışma sayfalarındaki tablolar, bir hücre aralığında bulunan bir veri grubunu düzenlemek için kullanılır. Tablolar, çalışma sayfalarında farklı türde listeler tutmanıza da yardımcı olur. Excel çalışma sayfasında bir tablo oluşturmak için adımlar aşağıdadır.

  • IWorkbook sınıfını kullanarak yeni bir Excel çalışma kitabı oluşturun.
  • Varsayılan çalışma sayfasına IWorksheet nesnesine erişin veya yeni bir tane ekleyin.
  • Önceki örnekte yaptığımız gibi hücrelere değer/veri ekleyin.
  • IWorksheet->GetIListObjects()->Add() yöntemini kullanarak çalışma sayfasının Listeler koleksiyonuna hücre aralığını ekleyin.
  • Listeyi IListObject nesnesine alın.
  • IListObject->SetTableStyleType() yöntemini kullanarak tabloya stil uygulayın.
  • Çalışma kitabını .xlsx dosyası olarak kaydedin.

Aşağıdaki kod örneği, C++ kullanılarak Excel XLSX dosyasında nasıl tablo oluşturulacağını gösterir.

// Bir Çalışma Kitabı nesnesinin örneğini oluşturun
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Varsayılan (ilk) çalışma sayfasının referansını alma
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Worksheet'in hücre koleksiyonunu alma
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Değeri hücrelere ayarlama
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// Çalışma sayfasına yeni bir Liste Nesnesi ekleme
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Tabloya Varsayılan Stil Ekleme
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Toplamı Göster
listObject->SetShowTotals(true);

// Excel dosyasını kaydetme
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Tablolu Excel Çalışma Kitabı

C++ ile Excel'de Tablo Oluşturma

C++ kullanarak Excel Elektronik Tablosunda Grafikler Oluşturun

Excel elektronik tablolarındaki grafikler, farklı türde grafik nesneleri kullanarak verileri görselleştirmek için kullanılır. Özellikle veriler çok büyük olduğunda, bize verilerin hızlı bir şekilde anlaşılmasını ve anlaşılmasını sağlarlar. Aspose.Cells for C++ Sunburst, Treemap, Histogram, Pyramid, Bubble, Line ve çok daha fazlası gibi çeşitli grafikleri destekler. Aspose.Cells for C++ kullanarak Excel çalışma kitabında grafik oluşturma adımları aşağıdadır.

  • Yeni bir Excel çalışma kitabı oluşturun.
  • IWorksheet nesnesine istediğiniz çalışma sayfasına erişin.
  • Grafiğin türünü geçirerek IWorksheet->GetICarts()->Add() yöntemini kullanarak çalışma sayfasına yeni bir grafik ekleyin.
  • Yeni eklenen grafiğe ICart nesnesine erişin.
  • ICart->GetNISeries()->Add() yöntemini kullanarak grafiğin veri kaynağını ayarlayın.
  • Çalışma kitabını .xlsx dosyası olarak kaydedin.

Aşağıdaki kod örneği, C++ kullanarak Excel XLSX dosyasında nasıl grafik oluşturulacağını gösterir.

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

// Yeni bir çalışma kitabı oluştur
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Varsayılan olarak oluşturulan ilk çalışma sayfasını alın
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Hücrelere örnek değerler ekleme
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// Çalışma sayfasına grafik ekleme
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Yeni eklenen grafiğin örneğine erişme
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// "A1" hücresinden "B3" hücresine değişen grafiğe SeriesCollection (grafik veri kaynağı) ekleme
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Excel dosyasını kaydetme
workbook->Save(outputChartTypePyramid);

Grafikli Excel Çalışma Kitabı

C++ ile Excel'de Grafik Oluşturma

Çözüm

Bu yazıda, C++ kullanarak sıfırdan MS Excel elektronik tablolarının nasıl oluşturulacağını ele aldık. Makale ayrıca tabloların, grafiklerin nasıl oluşturulacağına ve Excel çalışma sayfalarında formüllerin nasıl hesaplanacağına ilişkin adım adım yönergeler ve kod örnekleri içerir. Aspose.Cells for C++ belgelerinden Excel otomasyonu ile ilgili diğer gelişmiş özellikler hakkında daha fazla bilgi edinebilirsiniz.

İlgili Makale