将枢轴 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)
下面的代码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)