关于使用xlwings刷新透视表报错类 Worksheet 的 PivotTables 方法无效问题:
问题描述
使用xlwings刷新透视表,但类 Worksheet 的 PivotTables 方法无效,报错
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '类 Worksheet 的 PivotTables 方法无效', 'xlmain11.chm', 0, -2146827284), None)
app = xlwings.App(visible=False, add_book=False)
app.display_alerts = False
wb = app.books.open('test.xlsx')
ws = wb.sheets['Sheet1']
#
# 插入数据处理数据
#
ws.api.PivotTables("数据透视表1").PivotCache().Refresh()
wb.save()
wb.close()
app.quit()
app.kill()
原因分析:
提示:逐步分析
最终定位到
ws.api.PivotTables("数据透视表1").PivotCache().Refresh()
发现其实是定义的sheet “ws” 中没有该透视表,透视表放sheet2展示,原数据放sheet1
解决方案:
提示:定位到透视表所在sheet再刷新即可
附正确代码:
app = xlwings.App(visible=False, add_book=False)
app.display_alerts = False
wb = app.books.open('test.xlsx')
ws = wb.sheets['Sheet1']
#
# 插入数据处理数据
#
# 重新定位
sheet = wb.sheets['Sheet2']
sheet .api.PivotTables("数据透视表1").PivotCache().Refresh()
wb.save()
wb.close()
app.quit()
app.kill()