【发布时间】:2021-12-09 20:04:48
【问题描述】:
我一直在尝试将 Excel 中的图表导出为 Python 中的图像文件(JPG 或 ING)。我在看WIN32com。这是我到目前为止所拥有的。
import win32com.client as win32
excel = win32.gencache.EnsureDispatch("Excel.Application")
wb = excel.Workbooks.Open("<WORKSHEET NAME>")
r = wb.Sheets("<SHEET NAME>").Range("A1:J50")
# Here A1:J50 is the area over which cart is
r.CopyPicture()
这就是我卡住的地方。我现在需要将所选范围复制到文件中。对文档的任何帮助或指示都会对我有很大帮助。
我已经根据以下 VBA 脚本对上面的代码进行了建模:
Sub Export_Range_Images()
' =========================================
' Code to save selected Excel Range as Image
' =========================================
Dim oRange As Range
Dim oCht As Chart
Dim oImg As Picture
Set oRange = Range("A1:B2")
Set oCht = Charts.Add
oRange.CopyPicture xlScreen, xlPicture
oCht.Paste
oCht.Export FileName:="C:\temp\SavedRange.jpg", Filtername:="JPG"
End Sub
代码片段来自:http://vbadud.blogspot.com/2010/06/how-to-save-excel-range-as-image-using.html
【问题讨论】:
-
我的建议是打破与 Excel 的联系。为什么要在 Excel 中绘制图表,然后使用 Python?使用 python 读取数据并使用 matplotlib 进行绘图很容易。
-
不幸的是,早期的工作迫使我坚持使用 Excel。并且有 10 多张图表是从多张纸上绘制的。
-
为什么不直接导出图表呢?
Sheet对象有一个ChartObjects集合:每个ChartObject都有一个包含Chart和Export方法。复制包含图表的范围,然后将其粘贴到空图表中似乎需要很长时间。
标签: python windows excel winapi win32com