In precedenza, ho scritto un post su come implementare le funzionalità di automazione di Excel e creare file XLS/XLSX di Excel da zero utilizzando C#. Oggi ti mostrerò come creare cartelle di lavoro Excel, inserire dati in fogli di lavoro Excel, calcolare formule e creare grafici e tabelle in fogli di lavoro utilizzando C++. Tutte le funzionalità di automazione del foglio di calcolo saranno alimentate dall’API C++ Excel - Aspose.Cells for C++.
Aspose.Cells per C++ è una libreria C++ nativa che consente di creare, leggere, analizzare e convertire fogli di calcolo senza richiedere Microsoft Excel. Fornisce un set completo di funzionalità di automazione di Excel che possono essere utilizzate per generare e manipolare fogli di calcolo XLS/XLSX. In questo articolo, tratteremo le seguenti funzionalità per la creazione di file XLS/XLSX di Excel da zero.
- Crea file Excel (XLS/XLSX) usando C++
- Aggiungi dati a un foglio di lavoro Excel usando C++
- Calcola le formule della cartella di lavoro usando C++
- Crea tabelle in un foglio di lavoro Excel usando C++
- Crea grafici in Excel XLS/XLSX usando C++
API C++ per fogli di calcolo Excel - Installazione
È possibile scaricare il pacchetto completo di file di libreria di Aspose.Cells per C++ dalla sezione Download. Il pacchetto contiene anche un’applicazione console di esempio pronta per l’esecuzione.
Crea file Excel (XLS/XLSX) usando C++
Per prima cosa creiamo una semplice cartella di lavoro XLSX di Excel da zero. Una cartella di lavoro è composta da uno o più fogli di lavoro e ogni foglio di lavoro contiene i dati sotto forma di righe e colonne. Pertanto, per creare un foglio di calcolo Excel, è necessario prima creare una cartella di lavoro e quindi aggiungervi fogli di lavoro. Di seguito sono riportati i passaggi per creare un file Excel utilizzando Aspose.Cells per C++.
- Crea un oggetto della classe IWorkbook.
- Ottieni il primo foglio di lavoro (creato per impostazione predefinita) della cartella di lavoro in un oggetto IWorksheet da IWorksheetCollection.
- Accedi alle celle del foglio di lavoro in un oggetto ICells utilizzando il metodo IWorksheet->GetICells().
- Accedi alla cella desiderata del foglio di lavoro in un oggetto ICell utilizzando il metodo ICells->GetObjectByIndex() specificando l’indice di riga e colonna.
- Aggiungi valore alla cella usando il metodo ICell->PutValue().
- Salva la cartella di lavoro come file .xlsx usando il metodo IWorkbook->Save().
L’esempio di codice seguente mostra come creare un file XLSX di Excel usando C++.
Cartella di lavoro Excel
Quello che segue è lo screenshot della cartella di lavoro di Excel che abbiamo appena creato.
Aggiungi dati a un foglio di lavoro Excel usando C++
Nell’esempio precedente, abbiamo visto come creare un semplice file Excel e inserire un valore in una cella particolare utilizzando l’indice di riga e colonna. Tuttavia, molto spesso le celle nei fogli di lavoro di Excel vengono identificate utilizzando la lettera della colonna e i numeri di riga come A1, A2, B1 e così via. Diamo un’occhiata all’esempio di come inserire dati nel foglio di lavoro utilizzando i nomi delle celle. Il processo differisce solo per l’aggiunta di valore alla cella e tutti gli altri passaggi della creazione della cartella di lavoro e dei fogli di lavoro di Excel sono gli stessi.
L’esempio di codice seguente mostra come creare una cartella di lavoro XLSX di Excel e inserirvi dati usando C++.
Calcola le formule della cartella di lavoro usando C++
L’impostazione di formule nelle cartelle di lavoro di Excel è una funzionalità straordinaria per eseguire calcoli sui dati. Rende molto più semplice eseguire calcoli complessi sui dati in modo efficace ed efficiente. Di seguito sono riportati i passaggi per impostare e calcolare le formule nei fogli di lavoro di Excel.
- Crea un oggetto della classe IWorkbook.
- Ottieni il foglio di lavoro in un oggetto IWorksheet da IWorksheetCollection.
- Usa la classe ICell per accedere alla cella a cui vuoi applicare la formula.
- Imposta la formula per la cella usando il metodo ICell->SetFormula().
- Calcola la formula usando il metodo IWorkbook->CalculateFormula().
- Salva la cartella di lavoro usando il metodo IWorkbook->Save().
L’esempio di codice seguente mostra come aggiungere e calcolare formule in una cartella di lavoro XLSX di Excel usando C++.
Crea tabelle in un foglio di lavoro Excel usando C++
Le tabelle nei fogli di lavoro di Excel vengono utilizzate per organizzare un gruppo di dati situato in un intervallo di celle. Le tabelle aiutano anche a mantenere diversi tipi di elenchi nei fogli di lavoro. Di seguito sono riportati i passaggi per creare una tabella nel foglio di lavoro di Excel.
- Crea una nuova cartella di lavoro di Excel utilizzando la classe IWorkbook.
- Accedi al foglio di lavoro predefinito nell’oggetto IWorksheet o aggiungine uno nuovo.
- Inserisci valore/dati nelle celle nello stesso modo in cui abbiamo fatto nell’esempio precedente.
- Aggiungi l’intervallo di celle alla raccolta Lists del foglio di lavoro utilizzando il metodo IWorksheet->GetIListObjects()->Add().
- Ottieni l’elenco nell’oggetto IListObject.
- Applicare lo stile alla tabella utilizzando il metodo IListObject->SetTableStyleType().
- Salva la cartella di lavoro come file .xlsx.
L’esempio di codice seguente mostra come creare una tabella nel file XLSX di Excel usando C++.
// Istanziare un oggetto cartella di lavoro
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Ottenere il riferimento del foglio di lavoro predefinito(primo).
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Ottenere la raccolta di celle del foglio di lavoro
intrusive_ptr<ICells> cells = worksheet->GetICells();
// Impostazione del valore sulle celle
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);
// Aggiunta di un nuovo oggetto elenco al foglio di lavoro
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);
// Aggiunta dello stile predefinito alla tabella
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);
// Mostra totale
listObject->SetShowTotals(true);
// Salvataggio del file Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));
Cartella di lavoro Excel con tabella
Crea grafici in un foglio di calcolo Excel usando C++
I grafici nei fogli di calcolo Excel vengono utilizzati per visualizzare i dati utilizzando diversi tipi di oggetti grafici. Ci danno una rapida visione e comprensione dei dati, in particolare quando i dati sono enormi. Aspose.Cells per C++ supporta una varietà di grafici tra cui Sunburst, Treemap, Histogram, Pyramid, Bubble, Line e molti altri. Di seguito sono riportati i passaggi per creare un grafico nella cartella di lavoro di Excel usando Aspose.Cells per C++.
- Crea una nuova cartella di lavoro di Excel.
- Accedi al foglio di lavoro desiderato nell’oggetto IWorksheet.
- Aggiungi un nuovo grafico al foglio di lavoro usando il metodo IWorksheet->GetICharts()->Add() passando il tipo di grafico.
- Accedi al grafico appena aggiunto nell’oggetto IChart.
- Impostare l’origine dati per il grafico utilizzando il metodo IChart->GetNISeries()->Add().
- Salva la cartella di lavoro come file .xlsx.
L’esempio di codice seguente mostra come creare un grafico nel file XLSX di Excel usando C++.
// Percorso del file excel di output
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));
// Crea una nuova cartella di lavoro
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Ottieni il primo foglio di lavoro creato per impostazione predefinita
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Aggiunta di valori di esempio alle celle
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);
// Aggiunta di un grafico al foglio di lavoro
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);
// Accesso all'istanza del grafico appena aggiunto
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);
// Aggiunta di SeriesCollection (origine dati grafico) al grafico che va dalla cella "A1" a "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);
// Salvataggio del file Excel
workbook->Save(outputChartTypePyramid);
Cartella di lavoro Excel con grafico
Conclusione
In questo articolo, abbiamo spiegato come creare fogli di calcolo MS Excel da zero utilizzando C++. L’articolo contiene anche linee guida dettagliate ed esempi di codice su come creare tabelle, grafici e calcolare formule nei fogli di lavoro di Excel. Puoi saperne di più su altre funzionalità avanzate relative all’automazione di Excel dalla documentazione di Aspose.Cells per C++.