在python3.7下使用win32com库操作excel文件(需要本地安装有office阅读办公软件),将指定区域复制为图片,并批量保存下来。如果只是需要纯粹导出excel里面的图片建议使用本站另一篇文章介绍的方法:python导出excel中所有图片(写入excel数据) 另外,本片也是在该文的基础上改进而来。
在调试过程中也遇到很多的报错,建议在使用时关闭不必要的程序,如果报excel程序错误可能是excel文件被占用,建议在任务管理器里面关闭所有excel进程!如果出现图片为空建议加上sleep延时,防止剪切板操作过快取不到数据,期间遇到的报错信息已附于代码正文及文章末尾。下面上python源码(源码中夹杂了python使用pypiwin32库操作的代码,已经注释了,有需要的也可以看看):
import win32com.client as win32 # 打开excel文件
#pip install pypiwin32
##########import openpyxl #另一种操作excel的包
import time
import pythoncom,os
from PIL import ImageGrab #用于获取复制的图片
file='312(带图片).xlsx'
file_name = os.path.abspath(file) # 把相对路径转成绝对路径
#pythoncom.CoInitialize() # 开启多线程
excel = win32.Dispatch('Excel.Application') #获取Excel
#excel = DispatchEx("Excel.Application") #启动excel
excel.Visible = True #可视化
#excel.DisplayAlerts = False #是否显示警告 (保存时不会弹出窗口)
#excel.ScreenUpdating = 1 # 关闭屏幕刷新
wb2 = excel.Workbooks.Open(file_name)
ws2 = wb2.Worksheets('Sheet1') # 获取Sheet1
info = ws2.UsedRange#获取有效数据区域
nrows = info.Rows.Count #总行数
#ncols = info.Columns.Count #总列数
max_excel_row = nrows+