Twórz pliki Excela w C++

Wcześniej napisałem post o tym, jak zaimplementować funkcje automatyzacji Excela i tworzyć pliki Excel XLS/XLSX od podstaw przy użyciu C#. Dzisiaj pokażę ci, jak tworzyć skoroszyty programu Excel, wstawiać dane do arkuszy programu Excel, obliczać formuły oraz tworzyć wykresy i tabele w arkuszach kalkulacyjnych przy użyciu języka C++. Wszystkie funkcje automatyzacji arkuszy kalkulacyjnych będą obsługiwane przez C++ Excel API - Aspose.Cells for C++.

Aspose.Cells for C++ to natywna biblioteka C++, która pozwala tworzyć, czytać, analizować i konwertować dokumenty arkuszy kalkulacyjnych bez konieczności używania programu Microsoft Excel. Zapewnia pełny zestaw funkcji automatyzacji programu Excel, które można wykorzystać do generowania i manipulowania arkuszami kalkulacyjnymi XLS/XLSX. W tym artykule omówimy następujące funkcje tworzenia od podstaw plików Excel XLS/XLSX.

Interfejs API arkusza kalkulacyjnego programu Excel w języku C++ — instalacja

Możesz pobrać pełny pakiet plików biblioteki Aspose.Cells for C++ z sekcji Downloads. Pakiet zawiera również gotową do uruchomienia przykładową aplikację konsolową.

Twórz pliki Excela (XLS/XLSX) przy użyciu C++

Najpierw stwórzmy od podstaw prosty skoroszyt programu Excel XLSX. Skoroszyt składa się z jednego lub wielu arkuszy, a każdy arkusz zawiera dane w postaci wierszy i kolumn. Dlatego, aby utworzyć arkusz kalkulacyjny Excel, musisz najpierw utworzyć skoroszyt, a następnie dodać do niego arkusze kalkulacyjne. Poniżej przedstawiono kroki tworzenia pliku programu Excel przy użyciu Aspose.Cells dla języka C++.

Poniższy przykładowy kod pokazuje, jak utworzyć plik Excel XLSX przy użyciu języka C++.

/*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")));

Skoroszyt Excela

Poniżej znajduje się zrzut ekranu właśnie utworzonego skoroszytu programu Excel.

Utwórz Excela XLSX w C++

Dodaj dane do arkusza programu Excel przy użyciu języka C++

W poprzednim przykładzie widzieliśmy, jak utworzyć prosty plik programu Excel i wstawić wartość do określonej komórki za pomocą indeksu wiersza i kolumny. Jednak najczęściej komórki w arkuszach programu Excel są identyfikowane za pomocą litery kolumny i numerów wierszy, takich jak A1, A2, B1 itd. Przyjrzyjmy się więc przykładowi, jak wstawić dane do arkusza przy użyciu nazw komórek. Proces różni się tylko dodawaniem wartości do komórki, a wszystkie inne etapy tworzenia skoroszytu i arkuszy programu Excel są takie same.

Poniższy przykładowy kod pokazuje, jak utworzyć skoroszyt programu Excel XLSX i wstawić do niego dane przy użyciu języka C++.

//Ścieżka wyjściowego pliku programu Excel
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//Przeczytaj wejściowy plik Excela
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Uzyskiwanie dostępu do drugiego arkusza w pliku programu Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Dodanie wartości ciągu do komórki
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Dodanie podwójnej wartości do komórki
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Dodawanie wartości całkowitej do komórki
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Dodanie wartości logicznej do komórki
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Ustawianie formatu wyświetlania daty
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//Zapisz skoroszyt
workbook->Save(outputData);

Oblicz formuły skoroszytu przy użyciu języka C++

Ustawianie formuł w skoroszytach programu Excel to niesamowita funkcja do wykonywania obliczeń na danych. Ułatwia to efektywne i wydajne wykonywanie złożonych obliczeń na danych. Poniżej przedstawiono kroki ustawiania i obliczania formuł w arkuszach programu Excel.

Poniższy przykładowy kod pokazuje, jak dodawać i obliczać formuły w skoroszycie programu Excel XLSX przy użyciu języka C++.

//Utwórz nowy skoroszyt
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Pobierz pierwszy arkusz roboczy, który jest tworzony domyślnie
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//Dodanie wartości do komórki „A1”.
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//Dodanie wartości do komórki „A2”.
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//Dodanie wartości do komórki „A3”.
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//Dodanie formuły SUMA do komórki „A4”.
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Obliczanie wyników formuł
wb->CalculateFormula();

//Uzyskaj obliczoną wartość komórki „A4” i wydrukuj ją na konsoli
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

Twórz tabele w arkuszu programu Excel przy użyciu języka C++

Tabele w arkuszach programu Excel służą do organizowania grupy danych znajdujących się w zakresie komórek. Tabele pomagają również w obsłudze różnych typów list w arkuszach. Poniżej przedstawiono kroki tworzenia tabeli w arkuszu programu Excel.

  • Utwórz nowy skoroszyt programu Excel przy użyciu klasy IWorkbook.
  • Uzyskaj dostęp do domyślnego arkusza roboczego w obiekcie IWorksheet lub dodaj nowy.
  • Wstaw wartość/dane do komórek w taki sam sposób, jak w poprzednim przykładzie.
  • Dodaj zakres komórek do kolekcji Lists arkusza roboczego za pomocą metody IWorksheet->GetIListObjects()->Add().
  • Pobierz listę do obiektu IListObject.
  • Zastosuj stylizację do tabeli za pomocą metody IListObject->SetTableStyleType().
  • Zapisz skoroszyt jako plik .xlsx.

Poniższy przykładowy kod pokazuje, jak utworzyć tabelę w pliku XLSX programu Excel przy użyciu języka C++.

// Utwórz instancję obiektu skoroszytu
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Uzyskanie odniesienia do domyślnego (pierwszego) arkusza
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Uzyskanie kolekcji komórek arkusza kalkulacyjnego
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Ustawienie wartości dla komórek
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);  


// Dodanie nowego obiektu listy do arkusza
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Dodawanie stylu domyślnego do tabeli
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Pokaż sumę
listObject->SetShowTotals(true);

// Zapisywanie pliku Excela
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Skoroszyt programu Excel z tabelą

Utwórz tabelę w Excelu w C++

Twórz wykresy w arkuszu kalkulacyjnym Excel przy użyciu C++

Wykresy w arkuszach kalkulacyjnych Excel służą do wizualizacji danych za pomocą różnego rodzaju obiektów graficznych. Dają nam szybki wgląd i zrozumienie danych, zwłaszcza gdy dane są ogromne. Aspose.Cells for C++ obsługuje różne wykresy, w tym Sunburst, Treemap, Histogram, Pyramid, Bubble, Line i wiele innych. Poniżej przedstawiono kroki tworzenia wykresu w skoroszycie programu Excel przy użyciu Aspose.Cells dla języka C++.

  • Utwórz nowy skoroszyt programu Excel.
  • Uzyskaj dostęp do żądanego arkusza roboczego w obiekcie IWorksheet.
  • Dodaj nowy wykres do arkusza za pomocą metody IWorksheet->GetICarts()->Add() przekazując typ wykresu.
  • Uzyskaj dostęp do nowo dodanego wykresu w obiekcie ICart.
  • Ustaw źródło danych dla wykresu za pomocą metody ICart->GetNISeries()->Add().
  • Zapisz skoroszyt jako plik .xlsx.

Poniższy przykładowy kod pokazuje, jak utworzyć wykres w pliku XLSX programu Excel przy użyciu języka C++.

// Ścieżka wyjściowego pliku programu Excel
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// Utwórz nowy skoroszyt
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Pobierz pierwszy arkusz roboczy, który jest tworzony domyślnie
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Dodawanie przykładowych wartości do komórek
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);

// Dodanie wykresu do arkusza
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Dostęp do instancji nowo dodanego wykresu
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Dodanie SeriesCollection (źródło danych wykresu) do wykresu w zakresie od komórki „A1” do „B3”
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Zapisywanie pliku Excela
workbook->Save(outputChartTypePyramid);

Skoroszyt programu Excel z wykresem

Utwórz wykres w Excelu w C++

Wniosek

W tym artykule omówiliśmy, jak tworzyć od podstaw arkusze kalkulacyjne MS Excel przy użyciu C++. Artykuł zawiera również wskazówki krok po kroku i przykłady kodu dotyczące tworzenia tabel, wykresów i obliczania formuł w arkuszach programu Excel. Możesz dowiedzieć się więcej o innych zaawansowanych funkcjach związanych z automatyzacją Excela z dokumentacji Aspose.Cells for C++.

Powiązany artykuł