Le tabelle pivot riorganizzano i dati per rappresentarli in modo significativo. Forniscono diverse opzioni di ordinamento e forniscono somme, medie o altre statistiche raggruppando i dati insieme. È uno strumento essenziale per l’analisi dei dati ed è una parte fondamentale di MS Excel. Potresti trovarti in scenari in cui devi creare e manipolare tabelle pivot a livello di codice. A tal fine, questo articolo ti insegnerà come lavorare con le tabelle pivot nei file Excel utilizzando C++.
- API C++ per l’utilizzo delle tabelle pivot nei file di Excel
- Crea una tabella pivot in un file Excel usando C++
- Ordina la tabella pivot in un file Excel usando C++
- Nascondi le righe in una tabella pivot usando C++
- Manipola i dati della tabella pivot usando C++
API C++ per l’utilizzo delle tabelle pivot nei file di Excel
Aspose.Cells for C++ è una libreria C++ nativa che consente di creare, leggere e aggiornare file Excel senza richiedere l’installazione di Microsoft Excel. L’API supporta anche l’utilizzo delle tabelle pivot nei file Excel. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione Download.
PM> Install-Package Aspose.Cells.Cpp
Crea una tabella pivot in un file Excel usando C++
Nell’esempio seguente, creeremo un nuovo file Excel, inseriremo dati di esempio in esso e creeremo una tabella pivot. Il file generato in questo esempio verrà utilizzato come file di origine per altri esempi. Di seguito sono riportati i passaggi per creare una tabella pivot in un file Excel.
- Innanzitutto, crea un’istanza della classe IWorkbook per rappresentare il nuovo file Excel.
- Accedi al foglio di lavoro in cui desideri inserire la tabella pivot utilizzando il metodo IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Aggiungi dati di esempio per la tabella pivot.
- Aggiungi una tabella pivot usando IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String sourceData, intrusiveptrAspose::Cells::Systems::String destCellName, intrusiveptrAspose::Cells::Systems::String nometabella).
- Per accedere alla tabella pivot, utilizzare il metodo IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Manipola i campi e imposta lo stile della tabella pivot.
- Infine, salva il file Excel usando IWorkbook->Salva (intrusiveptrAspose::Cells::Systems::String nomefile).
Il codice di esempio seguente mostra come creare una tabella pivot in un file di Excel usando C++.
// Percorso della directory di origine.
StringPtr srcDir = new String("SourceDirectory\\");
// Percorso della directory di output.
StringPtr outDir = new String("OutputDirectory\\");
// Crea un'istanza della classe IWorkbook
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Accedi al primo foglio di lavoro
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Aggiungi i dati di origine per la tabella pivot
intrusive_ptr<String> str = new String("Fruit");
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(str);
str = new String("Quantity");
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(str);
str = new String("Price");
worksheet->GetICells()->GetObjectByIndex(new String("C1"))->PutValue(str);
str = new String("Apple");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(str);
str = new String("Mango");
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(str);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("C2"))->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(new String("C3"))->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(new String("C4"))->PutValue(4);
// Aggiungi tabella pivot
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));
// Accedi alla tabella pivot creata
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);
// Manipola righe, colonne e campi dati della tabella pivot
pivotTable->AddFieldToArea(PivotFieldType_Row, pivotTable->GetIBaseFields()->GetObjectByIndex(0));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(1));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(2));
pivotTable->AddFieldToArea(PivotFieldType_Column, pivotTable->GetIDataField());
// Imposta lo stile della tabella pivot
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);
// Salva il file excel di output
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
Ordina la tabella pivot in un file Excel usando C++
Nell’esempio seguente, ordineremo la prima colonna della tabella pivot in ordine decrescente. Di seguito sono riportati i passaggi per ordinare i dati in una tabella pivot.
- Innanzitutto, carica il file Excel di esempio utilizzando la classe IWorkbook.
- Recupera il foglio di lavoro contenente la tabella pivot utilizzando il metodo IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Accedi alla tabella pivot utilizzando il metodo IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Ottieni il campo riga e ordina la tabella pivot usando i metodi IPivotField->SetAutoSort(bool value) e IPivotField->SetAscendSort(bool value).
- Aggiorna il contenuto della tabella pivot e calcola i dati utilizzando rispettivamente i metodi IPivotTable->RefreshData() e IPivotTable->CalculateData().
- Infine, salva il file Excel usando IWorkbook->Salva (intrusiveptrAspose::Cells::Systems::String nomefile).
Il codice di esempio seguente illustra come ordinare una tabella pivot in un file di Excel usando C++.
// Percorso della directory di origine.
StringPtr srcDir = new String("SourceDirectory\\");
// Percorso della directory di output.
StringPtr outDir = new String("OutputDirectory\\");
// Percorso del file excel di input
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Percorso del file excel di output
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));
// Carica il file excel di esempio
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Accedi al primo foglio di lavoro
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Accedi alla tabella pivot
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Imposta l'ordinamento delle tabelle pivot
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);
// Aggiorna e calcola i dati nella tabella pivot.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Salva il file excel di output
workbook->Save(outputSortedPivotTable);
Nascondi le righe in una tabella pivot usando C++
Con Aspose.Cells per l’API C++, puoi anche nascondere le righe in una tabella pivot. Nell’esempio seguente, nasconderemo la riga con l’etichetta della riga “Arancione”. Di seguito sono riportati i passaggi per nascondere le righe in una tabella pivot.
- Innanzitutto, carica il file Excel di esempio utilizzando la classe IWorkbook.
- Recupera il foglio di lavoro contenente la tabella pivot utilizzando il metodo IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Accedi alla tabella pivot utilizzando il metodo IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Ottieni l’intervallo del corpo dati della tabella pivot utilizzando il metodo IPivotTable->GetIDataBodyRange().
- Scorri le righe della tabella pivot e nascondi le righe che soddisfano i tuoi criteri.
- Aggiorna il contenuto della tabella pivot e calcola i dati utilizzando rispettivamente i metodi IPivotTable->RefreshData() e IPivotTable->CalculateData().
- Infine, salva il file Excel usando IWorkbook->Salva (intrusiveptrAspose::Cells::Systems::String nomefile).
Il codice di esempio seguente mostra come nascondere le righe in una tabella pivot usando C++.
// Percorso della directory di origine.
StringPtr srcDir = new String("SourceDirectory\\");
// Percorso della directory di output.
StringPtr outDir = new String("OutputDirectory\\");
// Percorso del file excel di input
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Percorso del file excel di output
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));
// Carica il file excel di esempio
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Accedi al primo foglio di lavoro
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Accedi alla tabella pivot
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Ottieni l'intervallo del corpo della tabella pivot
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();
// Riga iniziale della tabella pivot
int currentRow = 5;
// Riga finale della tabella pivot
int rowsUsed = dataBodyRange->GetendRow();
// Scorri le righe, confronta il valore della cella e nascondi le righe.
for (int i = currentRow; i < rowsUsed; i++) {
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetICell(i, 4);
if (strcmp(cell->GetStringValue()->charValue(), "Orange") == 0) {
worksheet->GetICells()->HideRow(i);
}
}
// Aggiorna e calcola i dati nella tabella pivot.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Salva il file excel di output
workbook->Save(outputHiddenRowPivotTable);
Manipola i dati della tabella pivot usando C++
Puoi anche manipolare i dati di una tabella pivot esistente usando Aspose.Cells per l’API C++. Nell’esempio seguente, sostituiremo il testo “Apple” nella cella “A2” con “Arancione” e rifletteremo la modifica nella tabella pivot. Di seguito sono riportati i passaggi per manipolare i dati della tabella pivot.
- Innanzitutto, carica il file Excel di esempio utilizzando la classe IWorkbook.
- Recupera il foglio di lavoro contenente i dati della tabella pivot utilizzando il metodo IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Aggiorna i dati della tabella pivot in base alle tue esigenze.
- Per accedere alla tabella pivot, utilizzare il metodo IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Aggiorna il contenuto della tabella pivot e calcola i dati utilizzando rispettivamente i metodi IPivotTable->RefreshData() e IPivotTable->CalculateData().
- Infine, salva il file Excel usando IWorkbook->Salva (intrusiveptrAspose::Cells::Systems::String nomefile).
Il codice di esempio seguente mostra come aggiornare i dati di una tabella pivot usando C++.
// Percorso della directory di origine.
StringPtr srcDir = new String("SourceDirectory\\");
// Percorso della directory di output.
StringPtr outDir = new String("OutputDirectory\\");
// Percorso del file excel di input
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Percorso del file excel di output
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));
// Carica il file excel di esempio
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Accedi al primo foglio di lavoro
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Modifica il valore della cella A2 che si trova all'interno dei dati di origine della tabella pivot
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
// Accedi alla tabella pivot, aggiornala e calcolala
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();
// Salva il file excel di output
workbook->Save(outputManipulatePivotTable);
Ottieni una licenza gratuita
Per provare l’API senza limitazioni di valutazione, puoi richiedere una licenza temporanea gratuita.
Conclusione
In questo articolo hai imparato a lavorare con le tabelle pivot nei file Excel usando C++. In particolare, hai imparato come creare una tabella pivot e ordinare, nascondere e aggiornare i dati in una tabella pivot utilizzando C++. Aspose.Cells per C++ è una vasta API che fornisce una serie di funzionalità aggiuntive per lavorare con i file Excel. Puoi esplorare l’API in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul nostro forum di supporto gratuito.