为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 保留 excel 数据透视表

Python - 保留 excel 数据透视表

繁星淼淼 2023-04-25 17:41:30
我正在将现有文件复制到新工作簿中,然后隐藏一些不必要的选项卡。需要可见的选项卡之一包含一个数据透视表,该数据透视表在脚本完成后显示为值(而不是实际的数据透视表)。我需要“保留”数据透视表编辑: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.refreshOnLoadTrue

由于_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'


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信