Skapa Excel-filer i C++

Tidigare har jag skrivit ett inlägg om hur man implementerar Excel-automatiseringsfunktioner och skapar Excel XLS/XLSX-filer från grunden med C#. Idag ska jag visa dig hur du skapar Excel-arbetsböcker, infogar data i Excel-kalkylblad, beräknar formler och skapar diagram och tabeller i kalkylblad med C++. Alla kalkylbladsautomatiseringsfunktioner kommer att drivas av C++ Excel API - Aspose.Cells for C++.

Aspose.Cells för C++ är ett inbyggt C++-bibliotek som låter dig skapa, läsa, analysera och konvertera kalkylarksdokument utan att behöva Microsoft Excel. Den tillhandahåller en komplett uppsättning av Excel-automatiseringsfunktioner som kan användas för att generera och manipulera XLS/XLSX-kalkylblad. I den här artikeln kommer vi att täcka följande funktioner för att skapa Excel XLS/XLSX-filer från början.

C++ Excel Spreadsheet API - Installation

Du kan ladda ner hela paketet med biblioteksfiler för Aspose.Cells för C++ från avsnittet Nedladdningar. Paketet innehåller också ett körbart exempel på en konsolapplikation.

Skapa Excel-filer (XLS/XLSX) med C++

Låt oss först skapa en enkel Excel XLSX-arbetsbok från början. En arbetsbok består av ett eller flera kalkylblad och varje kalkylblad innehåller data i form av rader och kolumner. Därför, för att skapa ett Excel-kalkylblad, måste du skapa en arbetsbok först och sedan lägga till kalkylblad i den. Följande är stegen för att skapa en Excel-fil med Aspose.Cells för C++.

Följande kodexempel visar hur man skapar en Excel XLSX-fil med 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")));

Excel arbetsbok

Följande är skärmdumpen av Excel-arbetsboken vi just har skapat.

Skapa Excel XLSX i C++

Lägg till data i ett Excel-kalkylblad med C++

I det föregående exemplet har vi sett hur man skapar en enkel Excel-fil och infogar värde i en viss cell med hjälp av rad- och kolumnindex. Men oftast identifieras cellerna i Excel-kalkylbladen med kolumnbokstaven och radnummer som A1, A2, B1 och etc. Så låt oss titta på exemplet på hur man infogar data i kalkylbladet med cellnamnen. Processen skiljer sig bara i att lägga till värde till cellen och alla andra steg för att skapa Excel-arbetsboken och kalkylbladen är desamma.

Följande kodexempel visar hur du skapar en Excel XLSX-arbetsbok och infogar data i den med C++.

//Sökväg för utdata excel-fil
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//Läs indata excel-fil
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Åtkomst till det andra kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Lägga till ett strängvärde i cellen
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Lägga till ett dubbelt värde till cellen
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Lägga till ett heltalsvärde i cellen
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Lägga till ett booleskt värde till cellen
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Ställa in visningsformatet för datumet
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//Spara arbetsboken
workbook->Save(outputData);

Beräkna arbetsboksformler med C++

Att ställa in formler i Excel-arbetsböcker är en fantastisk funktion för att utföra beräkningar på data. Det gör det ganska lättare att utföra komplexa beräkningar på data effektivt och effektivt. Följande är stegen för att ställa in och beräkna formler i Excel-kalkylblad.

Följande kodexempel visar hur man lägger till och beräknar formler i en Excel XLSX-arbetsbok med C++.

//Skapa en ny arbetsbok
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Skaffa första kalkylbladet som skapas som standard
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//Lägga till ett värde till "A1"-cellen
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//Lägga till ett värde till "A2"-cellen
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//Lägga till ett värde i "A3"-cellen
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//Lägger till SUM-formel till "A4"-cell
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Beräkna resultaten av formler
wb->CalculateFormula();

//Få det beräknade värdet av cellen "A4" och skriv ut det på konsolen
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

Skapa tabeller i ett Excel-kalkylblad med C++

Tabellerna i Excel-kalkylblad används för att organisera en grupp data som finns i en rad celler. Tabeller hjälper dig också att underhålla olika typer av listor i kalkylbladen. Följande är stegen för att skapa en tabell i Excel-kalkylbladet.

Följande kodexempel visar hur man skapar en tabell i Excel XLSX-fil med C++.

// Instantiera ett arbetsboksobjekt
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Få referensen till standardkalkylbladet (första).
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Skaffa arbetsbladets cellsamling
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Ställer in värdet på cellerna
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);  


// Lägga till ett nytt listobjekt i kalkylbladet
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Lägger till standardstil i tabellen
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Visa totalt
listObject->SetShowTotals(true);

// Sparar Excel-filen
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Excel-arbetsbok med tabell

Skapa tabell i Excel i C++

Skapa diagram i Excel-kalkylblad med C++

Diagram i Excel-kalkylblad används för att visualisera data med olika typer av grafiska objekt. De ger oss en snabb insikt och förståelse av data, särskilt när data är enorma. Aspose.Cells för C++ stöder en mängd olika diagram inklusive Sunburst, Treemap, Histogram, Pyramid, Bubble, Line och många fler. Följande är stegen för att skapa ett diagram i Excel-arbetsbok med Aspose.Cells för C++.

  • Skapa en ny Excel-arbetsbok.
  • Öppna önskat kalkylblad i objektet IWorksheet.
  • Lägg till ett nytt diagram till kalkylbladet med metoden IWorksheet->GetICharts()->Add() genom att skicka diagramtypen.
  • Få åtkomst till det nyligen tillagda diagrammet till objektet IChart.
  • Ställ in datakällan för diagrammet med metoden IChart->GetNISeries()->Add().
  • Spara arbetsboken som .xlsx-fil.

Följande kodexempel visar hur man skapar ett diagram i Excel XLSX-fil med C++.

// Sökväg för utdata excel-fil
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// Skapa en ny arbetsbok
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Skaffa första kalkylbladet som skapas som standard
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Lägga till exempelvärden till celler
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);

// Lägga till ett diagram i arbetsbladet
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Åtkomst till instansen av det nyligen tillagda diagrammet
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Lägga till SeriesCollection (diagramdatakälla) till diagrammet som sträcker sig från "A1"-cell till "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Sparar Excel-filen
workbook->Save(outputChartTypePyramid);

Excel-arbetsbok med diagram

Skapa diagram i Excel i C++

Slutsats

I den här artikeln har vi täckt hur man skapar MS Excel-kalkylblad från grunden med C++. Artikeln innehåller också steg för steg riktlinjer och kodexempel om hur man skapar tabeller, diagram och beräknar formler i Excel-kalkylblad. Du kan lära dig mer om andra avancerade funktioner relaterade till Excel-automatisering från dokumentationen av Aspose.Cells for C++.

Relaterad artikel