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.

todo:imagen_alternativa_texto

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