我正在将现有文件复制到新工作簿中,然后隐藏一些不必要的选项卡。需要可见的选项卡之一包含一个数据透视表,该数据透视表在脚本完成后显示为值(而不是实际的数据透视表)。我需要“保留”数据透视表编辑:Excel 2013版本这是我的代码:import xlsxwriterimport openpyxl as xlimport shutilshutil.copy('C:/Prueba/GOOG.xlsm', 'C:/Prueba/GOOG-copia.xlsm')workbook = xl.load_workbook('C:/Prueba/GOOG-copia.xlsm', keep_vba = 'True')keep = ['Cacaca','Sheet1'] # Cacaca contains a pivot table that needs to be preservedfor i in workbook.sheetnames: if i in keep: pivot = workbook[i]._pivots[0] pivot.cache.refreshOnLoad = True workbook[i].sheet_state = 'visible' else: workbook[i].sheet_state = 'hidden'workbook.save('C:/Prueba/GOOG-copia.xlsm')workbook.close错误:AttributeError: 'Worksheet' object has no attribute '_pivots'
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
根据保存数据透视表的文档,您必须至少将它们的一个布尔值设置pivot.cache.refreshOnLoad
为True
由于_pivots
不存在于工作表上,除非它包含一个实际的数据透视表,我们可以检查数据透视表并在找到时设置缓存:
for i in workbook.sheetnames:
if i in keep:
ws = workbook[i]
if hasattr(ws, "_pivots"):
pivot = ws._pivots[0]
pivot.cache.refreshOnLoad = True
workbook[i].sheet_state = 'visible'
else:
workbook[i].sheet_state = 'hidden'
添加回答
举报
0/150
提交
取消