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.
- Twórz pliki programu Excel (XLS/XLSX) przy użyciu języka C++
- Dodawanie danych do arkusza programu Excel przy użyciu języka C++
- Oblicz formuły skoroszytu przy użyciu języka C++
- Twórz tabele w arkuszu programu Excel przy użyciu języka C++
- Twórz wykresy w Excel XLS/XLSX przy użyciu C++
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++.
- Utwórz obiekt klasy IWorkbook.
- Pobierz pierwszy arkusz (utworzony domyślnie) skoroszytu do obiektu IWorksheet z IWorksheetCollection.
- Uzyskaj dostęp do komórek arkusza w obiekcie ICells za pomocą metody IWorksheet->GetICells().
- Uzyskaj dostęp do żądanej komórki arkusza w obiekcie ICell za pomocą metody ICells->GetObjectByIndex(), określając indeks wiersza i kolumny.
- Dodaj wartość do komórki za pomocą metody ICell->PutValue().
- Zapisz skoroszyt jako plik .xlsx przy użyciu metody IWorkbook->Save().
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.
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.
- Utwórz obiekt klasy IWorkbook.
- Pobierz arkusz do obiektu IWorksheet z IWorksheetCollection.
- Użyj klasy ICell, aby uzyskać dostęp do komórki, do której chcesz zastosować formułę.
- Ustaw formułę dla komórki za pomocą metody ICell->SetFormula().
- Oblicz formułę za pomocą metody IWorkbook->CalculateFormula().
- Zapisz skoroszyt metodą IWorkbook->Save().
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ą
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
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++.