主题:关于 Aspose.Cells for Java 在刷新数据透视表(PivotTable)后导致筛选器(Filter)自动重置的问题咨询
问题背景:
我在使用 Aspose.Cells for Java 处理包含数据透视表的 Excel 文件。我的业务场景需要动态更新底表(Source Data)的数据量,并同步更新数据透视表的结果。
操作流程:
在我的代码中,为了确保数据透视表能反映底表的最新状态,我依次执行了以下操作:
调用 pivotTable.changeDataSource() 更新数据源范围(数据行数可能增加)。
调用 pivotTable.refreshData() 刷新缓存。
调用 pivotTable.calculateData() 重新计算结果。
遇到的问题:
虽然通过上述步骤成功更新了数据,但产生了一个严重的副作用:原本在 Excel 模板中预设的、或者之前通过代码设定的 PivotField 筛选条件(Row/Column/Page Field Filters)全部丢失了。
具体表现为:原本在某些字段中被取消勾选(不可见)的项,在执行刷新动作后全部变回了“勾选(可见)”状态。透视表自动回到了“全选”模式,导致汇总数据与预期不符。
我的诉求:
官方机制确认:在执行 changeDataSource 或 refreshData 时,Aspose.Cells 是否必然会重置 PivotCache 从而导致筛选状态丢失?
最佳实践建议:除了手动遍历并备份所有 PivotItem.isVisible() 状态、在刷新后再手动还原这种“硬编码”方式外,Aspose 是否提供任何内置的属性或方法(例如类似于 Excel 的 PreserveFilter 逻辑),可以在刷新数据源的同时保留现有的筛选配置?
感谢您提供的复现模板以及关于 Windows 与 Linux 环境差异的详细反馈。
我们已经收到了您提交的示例文件和环境背景信息。针对您提到的透视表刷新后在 Linux 环境下筛选值异常的问题,我们的开发团队将结合您提供的模板进行深入对比测试,以定位导致跨平台表现不一致的具体原因。
一旦调查有了新的进展或有任何修复方案,我们会第一时间在本帖中通知您。感谢您的配合与耐心等待。
public class TestExcel {
public static void main(String[] args) throws Exception {
String dir = "D:\\test\\"; // 你的路径
Workbook workbook = new Workbook(dir + "纯英文模板2+(1).xlsx");
Cells cells = workbook.getWorksheets().get("SR-daibiaochu").getCells();
cells.get("A2").putValue("a2");
cells.get("A3").putValue("a3");
workbook.getWorksheets().refreshAll();
workbook.save(dir + "dest.xlsx");
}
}
我们用上面的代码发现filter 变化了,请确认是否是你提出的问题。
如果可以的话,请提供一下你的测试代码。
另外我们已在内部问题跟踪系统中打开了以下新工单,并将根据 Free Support Policies 中提到的条款交付修复程序。
问题 ID:CELLSJAVA-46709
如果您需要优先支持以及直接联系我们的付费支持管理团队,可以获取 Paid Support Services。