Dříve jsem napsal příspěvek o tom, jak implementovat funkce automatizace Excelu a vytvářet soubory Excel XLS/XLSX od začátku pomocí C#. Dnes vám ukážu, jak vytvářet excelové sešity, vkládat data do excelových listů, počítat vzorce a vytvářet grafy a tabulky v listech pomocí C++. Všechny funkce automatizace tabulek budou poháněny C++ Excel API - Aspose.Cells for C++.
Aspose.Cells for C++ je nativní knihovna C++, která umožňuje vytvářet, číst, analyzovat a převádět tabulkové dokumenty bez nutnosti aplikace Microsoft Excel. Poskytuje kompletní sadu funkcí automatizace Excelu, které lze využít k generování a manipulaci s tabulkami XLS/XLSX. V tomto článku se budeme zabývat následujícími funkcemi vytváření souborů Excel XLS/XLSX od začátku.
- Vytvářejte soubory Excel (XLS/XLSX) pomocí C++
- Přidejte data do listu aplikace Excel pomocí C++
- Vypočítejte vzorce sešitu pomocí C++
- Vytvářejte tabulky v excelovém listu pomocí C++
- Vytvářejte grafy v Excelu XLS/XLSX pomocí C++
C++ Excel Spreadsheet API – instalace
Kompletní balíček knihovních souborů Aspose.Cells for C++ si můžete stáhnout ze sekce Ke stažení. Balíček také obsahuje ukázkovou konzolovou aplikaci připravenou ke spuštění.
Vytvářejte soubory Excel (XLS/XLSX) pomocí C++
Nejprve vytvořte jednoduchý sešit Excel XLSX od začátku. Sešit se skládá z jednoho nebo více listů a každý list obsahuje data ve formě řádků a sloupců. Proto, abyste mohli vytvořit excelovou tabulku, musíte nejprve vytvořit sešit a poté do něj přidat listy. Následují kroky k vytvoření souboru Excel pomocí Aspose.Cells for C++.
- Vytvořte objekt třídy IWorkbook.
- Získejte první list (ve výchozím nastavení vytvořený) sešitu do objektu IWorksheet z IWorksheetCollection.
- Přístup k buňkám listu do objektu ICells pomocí metody IWorksheet->GetICells().
- Přístup k požadované buňce listu do objektu ICell pomocí metody ICells->GetObjectByIndex() zadáním indexu řádku a sloupce.
- Přidejte hodnotu do buňky pomocí metody ICell->PutValue().
- Uložte sešit jako soubor .xlsx pomocí metody IWorkbook->Save().
Následující ukázka kódu ukazuje, jak vytvořit soubor Excel XLSX pomocí 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")));
Excelový sešit
Následuje snímek obrazovky sešitu aplikace Excel, který jsme právě vytvořili.
Přidejte data do listu aplikace Excel pomocí C++
V předchozím příkladu jsme viděli, jak vytvořit jednoduchý soubor Excel a vložit hodnotu do konkrétní buňky pomocí indexu řádků a sloupců. Nejčastěji jsou však buňky v excelových listech identifikovány pomocí písmene sloupce a čísel řádků, jako je A1, A2, B1 atd. Podívejme se tedy na příklad, jak vložit data do listu pomocí názvů buněk. Proces se liší pouze přidáním hodnoty do buňky a všechny ostatní kroky vytváření sešitu Excel a listů jsou stejné.
Následující ukázka kódu ukazuje, jak vytvořit sešit Excel XLSX a vložit do něj data pomocí C++.
//Cesta výstupního excelového souboru
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));
//Přečtěte si vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
//Přístup k druhému listu v souboru Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
//Přidání hodnoty řetězce do buňky
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");
//Přidání dvojité hodnoty do buňky
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);
//Přidání celočíselné hodnoty do buňky
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);
//Přidání booleovské hodnoty do buňky
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);
//Nastavení formátu zobrazení data
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);
//Uložte sešit
workbook->Save(outputData);
Vypočítat vzorce sešitu pomocí C++
Nastavení vzorců v sešitech aplikace Excel je úžasná funkce pro provádění výpočtů s daty. To docela usnadňuje provádět složité výpočty na datech efektivně a efektivně. Následují kroky k nastavení a výpočtu vzorců v listech aplikace Excel.
- Vytvořte objekt třídy IWorkbook.
- Získejte list do objektu IWorksheet z IWorksheetCollection.
- Pro přístup k buňce, na kterou chcete vzorec použít, použijte třídu ICell.
- Nastavte vzorec pro buňku pomocí metody ICell->SetFormula().
- Vypočítejte vzorec pomocí metody IWorkbook->CalculateFormula().
- Uložte sešit pomocí metody IWorkbook->Save().
Následující ukázka kódu ukazuje, jak přidat a vypočítat vzorce v sešitu Excel XLSX pomocí C++.
//Vytvořte nový sešit
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();
//Získejte první pracovní list, který je vytvořen ve výchozím nastavení
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);
//Přidání hodnoty do buňky "A1".
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);
//Přidání hodnoty do buňky "A2".
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);
//Přidání hodnoty do buňky "A3".
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);
//Přidání vzorce SUM do buňky "A4".
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));
//Výpočet výsledků vzorců
wb->CalculateFormula();
//Získejte vypočítanou hodnotu buňky "A4" a vytiskněte ji na konzole
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));
Vytvářejte tabulky v excelovém listu pomocí C++
Tabulky v listech aplikace Excel se používají k uspořádání skupiny dat umístěných v rozsahu buněk. Tabulky vám také pomáhají udržovat různé typy seznamů v listech. Následují kroky k vytvoření tabulky v listu aplikace Excel.
- Vytvořte nový excelový sešit pomocí třídy IWorkbook.
- Otevřete výchozí list do objektu IWorksheet nebo přidejte nový.
- Vložte hodnotu/data do buněk stejným způsobem, jako jsme to udělali v předchozím příkladu.
- Přidejte rozsah buněk do kolekce Lists listu pomocí metody IWorksheet->GetIListObjects()->Add().
- Získejte seznam do objektu IListObject.
- Aplikujte styl na tabulku pomocí metody IListObject->SetTableStyleType().
- Uložte sešit jako soubor .xlsx.
Následující ukázka kódu ukazuje, jak vytvořit tabulku v souboru Excel XLSX pomocí C++.
// Vytvořte instanci objektu sešitu
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Získání odkazu na výchozí (první) list
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Získání kolekce buněk listu
intrusive_ptr<ICells> cells = worksheet->GetICells();
// Nastavení hodnoty do buněk
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);
// Přidání nového objektu seznamu do listu
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);
// Přidání výchozího stylu do tabulky
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);
// Zobrazit celkem
listObject->SetShowTotals(true);
// Uložení souboru Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));
Excelový sešit s tabulkou
Vytvářejte grafy v tabulkovém procesoru Excel pomocí C++
Grafy v tabulkách aplikace Excel se používají k vizualizaci dat pomocí různých typů grafických objektů. Poskytují nám rychlý přehled a porozumění datům, zejména když jsou data obrovská. Aspose.Cells for C++ podporuje různé grafy včetně Sunburst, Treemap, Histogram, Pyramid, Bubble, Line a mnoha dalších. Následují kroky k vytvoření grafu v sešitu aplikace Excel pomocí Aspose.Cells for C++.
- Vytvořte nový excelový sešit.
- Otevřete požadovaný list do objektu IWorksheet.
- Přidejte nový graf do listu pomocí metody IWorksheet->GetICharts()->Add() předáním typu grafu.
- Přístup k nově přidanému grafu do objektu IChart.
- Nastavte zdroj dat pro graf pomocí metody IChart->GetNISeries()->Add().
- Uložte sešit jako soubor .xlsx.
Následující ukázka kódu ukazuje, jak vytvořit graf v souboru Excel XLSX pomocí C++.
// Cesta výstupního excelového souboru
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));
// Vytvořte nový sešit
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Získejte první pracovní list, který je vytvořen ve výchozím nastavení
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Přidání vzorových hodnot do buněk
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);
// Přidání grafu do listu
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);
// Přístup k instanci nově přidaného grafu
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);
// Přidání SeriesCollection (zdroj dat grafu) do grafu v rozsahu od buňky "A1" po "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);
// Uložení souboru Excel
workbook->Save(outputChartTypePyramid);
Excel sešit s grafem
Závěr
V tomto článku jsme se zabývali tím, jak vytvořit tabulky MS Excel od začátku pomocí C++. Článek také obsahuje pokyny krok za krokem a ukázky kódu, jak vytvářet tabulky, grafy a vypočítat vzorce v listech aplikace Excel. Více o dalších pokročilých funkcích souvisejících s automatizací Excelu se můžete dozvědět v dokumentaci Aspose.Cells for C++.