刷新模板文件中的第二张数据透视表pivot1,pivot0对应的数据透视图chart0出现异常

版本25.10

示例代码:
SyntaxEditor Code Snippet

var wb =new Workbook(path+“3.xlsx”);
var pivot=wb.Worksheets[“statistics”].PivotTables[“pivot1”];

pivot.RefreshData();
pivot.CalculateData();

wb.Save(path+“4.xlsx”);
3.zip (44.9 KB)

@cloudy

在您提供的代码中,您正在刷新Excel文件中的数据透视表。如果在刷新第二个数据透视表(pivot1)后,相关的图表(chart0)出现异常,可能是由于数据透视表的数据源或计算方式存在问题。

您可以尝试以下步骤来解决此问题:

  1. 确保数据透视表的源数据是最新的,并且没有任何空值或错误数据。
  2. 在刷新数据透视表后,确保调用 CalculateData() 方法来更新数据透视表的计算。
  3. 如果问题仍然存在,您可以手动检查数据透视表的设置,确保它们与图表的设置相匹配。

以下是您可以使用的代码示例:

var wb = new Workbook(path + "3.xlsx");
var pivot = wb.Worksheets["statistics"].PivotTables["pivot1"];

// 刷新数据透视表
pivot.RefreshData();
pivot.CalculateData();

// 保存工作簿
wb.Save(path + "4.xlsx");

如果问题依然存在,您可能需要检查Excel文件的结构,或考虑重新创建数据透视表和图表以确保它们之间的链接正确。

image.png (88.2 KB)
刷新前后对比,左边是刷新后

@cloudy
通过使用样例文件和代码在最新版本v25.10上进行测试,我们可以复现问题。 刷新样例文件中的第二张数据透视表pivot1后,透视表pivot0对应的数据透视图chart0出现显示异常 。

我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。

问题单号:CELLSNET-59192

@cloudy
由于两个透视表引用的是同一份数据源,在刷新后出现了异常。作为临时解决方案,你可以同时刷新两个透视表来得到正确的结果。请参考以下样例代码并查看附件。out_net.zip (44.2 KB)

Workbook wb = new Workbook(filePath +"3.xlsx");
//方法一
//PivotTable pivot = wb.Worksheets["statistics"].PivotTables["pivot1"];
//pivot.RefreshData();
//pivot.CalculateData();

//pivot = wb.Worksheets["statistics"].PivotTables["pivot0"];
//pivot.RefreshData();
//pivot.CalculateData();

//方法二
wb.Worksheets["statistics"].RefreshPivotTables();

wb.Save(filePath +"out_net.xlsx");

希望这些对你有所帮助。

@cloudy
Please refresh all pivot tables as the following :

 var wb = new Workbook(dir +"3.xlsx");
   //PivotTable pivot = wb.Worksheets["statistics"].PivotTables["pivot1"];

   //pivot.RefreshData();
   //pivot.CalculateData();
   wb.Worksheets.RefreshPivotTables();
   wb.Save(dir + "dest.xlsx");

@cloudy
你也可以用以下代码刷新:

var wb = new Workbook(dir +"3.xlsx");
 PivotTable pivot = wb.Worksheets["statistics"].PivotTables["pivot1"];

 PivotTableCalculateOption calculateOption = new PivotTableCalculateOption();
 calculateOption.RefreshData = true;//刷新数据并且所有依赖这个数据源的透视表都会重算。
 calculateOption.RefreshCharts = true;
 pivot.CalculateData(calculateOption);
// wb.Worksheets.RefreshPivotTables();
 wb.Save(dir + "dest.xlsx");

But, why won’t fix? @John.He

@cloudy,

请参考@simon.zhao在帖子中分享的代码片段。它应该能有效满足需求并运行良好。此外,这是刷新数据透视表及其对应或相关数据透视图的正确方法。