将枢轴 table 保存为图片?

Saving a pivot table as picture?

下面的代码select是一个枢轴table的范围并保存为图片。它如何通过名称(例如“Pivot1”)而不是范围转到 select 枢轴 table?

import win32com.client as win32

import sys
from pathlib import Path
import win32com.client as win32
from PIL import ImageGrab

excel_path = "C:/Prueba/GOOG-copia.xlsm"
excel = win32.DispatchEx('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(Filename=excel_path)
ws = wb.Worksheets('Cacaca')

win32c = win32.constants
ws.Range("A3:B8").CopyPicture(Format=win32c.xlBitmap)
img = ImageGrab.grabclipboard()
image_path = 'C:/Prueba/test.png'
img.save(image_path)
excel.Quit()

您可以 select 使用范围方法命名范围:

wb.Worksheets('Cacaca').Range("Pivot1").Select()

使用 Win32 库时,您通常可以先尝试使用 VBA 进行处理,因为 Win32 调用往往会映射到 VBA。

更新 - 这是列出工作簿中所有数据透视表的代码:

# create dictionary of Pivot tables by sheet
dd = {}
ShtCnt = excel.Sheets.Count
for s in range(ShtCnt):
        #print("Sheet Name:", wb.Sheets(s+1).Name)
        dd[wb.Sheets(s+1).Name] = []
        cnt = wb.Sheets(s+1).PivotTables().Count
        for x in range(cnt):
                #print(wb.Sheets(s+1).PivotTables(x+1).Name)
                dd[wb.Sheets(s+1).Name].append(wb.Sheets(s+1).PivotTables(x+1).Name)
            
print(dd)