Manipular tabla dinámica
Posibles escenarios de uso
Además de crear nuevas tablas dinámicas, puede manipular las tablas dinámicas nuevas y existentes. Puede cambiar los datos en el rango de origen de la tabla dinámica y luego actualizarlos y calcularlos y obtener los nuevos valores de las celdas de la tabla dinámica. Por favor useIPivotTable.RefreshData() yIPivotTable.CalculateData()después de haber cambiado los valores en el rango de origen de la tabla dinámica para actualizar la tabla dinámica.
Manipular tabla dinámica
El siguiente código de ejemplo carga elejemplo de archivo de Excel y accede a la tabla dinámica existente dentro de su primera hoja de trabajo. Cambia el valor de la celda B3 que está dentro del rango de origen de la tabla dinámica y luego actualiza la tabla dinámica. Antes de actualizar la tabla dinámica, accede al valor de la celda H8 de la tabla dinámica, que es 15 y, después de actualizar la tabla dinámica, su valor cambia a 6. Consulte laarchivo de salida de Excelgenerado con este código y la captura de pantalla que muestra el efecto del código de muestra en el archivo de Excel de muestra. Consulte también el resultado de la consola a continuación, que muestra el valor de la celda H8 de la tabla dinámica antes y después de actualizar la tabla dinámica.
Código de muestra
//For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C | |
//Source directory path | |
StringPtr dirPath = new String("..\\Data\\PivotTables\\"); | |
//Output directory path | |
StringPtr outPath = new String("..\\Data\\Output\\"); | |
//Path of input excel file | |
StringPtr sampleManipulatePivotTable = dirPath->StringAppend(new String("sampleManipulatePivotTable.xlsx")); | |
//Path of output excel file | |
StringPtr outputManipulatePivotTable = outPath->StringAppend(new String("outputManipulatePivotTable.xlsx")); | |
//Load the sample excel file | |
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook(sampleManipulatePivotTable); | |
//Access first worksheet | |
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0); | |
//Change value of cell B3 which is inside the source data of pivot table | |
intrusive_ptr<String> str = new String("Cup"); | |
ws->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(str); | |
//Get the value of cell H8 before refreshing pivot table | |
intrusive_ptr<String> val = ws->GetICells()->GetObjectByIndex(new String("H8"))->GetStringValue(); | |
StringPtr str1 = new String(L"Before refreshing Pivot Table value of cell H8: "); | |
Console::WriteLine(str1->StringAppend(val)); | |
//Access pivot table, refresh and calculate it | |
intrusive_ptr<IPivotTable> pt = ws->GetIPivotTables()->GetObjectByIndex(0); | |
pt->RefreshData(); | |
pt->CalculateData(); | |
//Get the value of cell H8 after refreshing pivot table | |
val = ws->GetICells()->GetObjectByIndex(new String("H8"))->GetStringValue(); | |
StringPtr str2 = new String(L"After refreshing Pivot Table value of cell H8: "); | |
Console::WriteLine(str2->StringAppend(val)); | |
//Save the output excel file | |
wb->Save(outputManipulatePivotTable); |
Salida de consola
A continuación se muestra la salida de la consola del código de ejemplo anterior cuando se ejecuta con el proporcionadoejemplo de archivo de Excel.
Before refreshing Pivot Table value of cell H8: 15
After refreshing Pivot Table value of cell H8: 6