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+1#pic_shape_name = range(1000)#初始化1000个数组,后面用于copy图片Shapename用
pic_shape_name = []
for n in range(1000):pic_shape_name.append('mypic_'+str(n))##########wb = openpyxl.load_workbook(file_name)
##########ws = wb.active
#get_highest_row()和get_highest_column()在最新版的openpyxl模块中已经被删除了
#取而代之的是max_row和max_column两个方法
#max_excel_row = int(format(ws.max_row))+1i =1
j = 0
for i in range(1,max_excel_row):#excel行循环#name = str(ws.cell(i,3).value)#openpyxl模块读取excel的方式,第三列name = ws2.Range('C'+str(i)).Value#注意openpyxl与win32com读取excel,如果遇到空值可以用 if is not None 来判断#或者将读取到的值强制转换为str字符,会变成字符串'None'#price_p = str(ws.cell(i,4).value)#第四列price_p = ws2.Range('D'+str(i)).Value#sku_class = str(ws.cell(i,1).value)#第一列 7寸sku_class = ws2.Range('A'+str(i)).Valueif name is not None and name != 'None' and  price_p !='' and price_p !='单价' and price_p !='None':j = j+1#ws.Range('B2:B2').CopyPicture()    # 复制D1:I17图片区域#time.sleep(5)#ws2.Range('B33:B33').CopyPicture()ws2.Range('B'+str(i)+':B'+str(i)).CopyPicture()ws2.Paste()  #直接粘贴可以 #ws2.Paste(ws2.Range('K'+str(i)))    # 将图片移动到K列,如果移动图片后面会导致所有复制出的图片都一模一样!pic_name0 =  str(j) + '.png'print('正在写入第('+str(i)+'/'+str(max_excel_row-1)+')个商品:'+ name +' 的图片文件:'+ pic_name0)#TypeError: can only concatenate str (not "NoneType") to strexcel.Selection.ShapeRange.Name = pic_shape_name[j] # 选择区域重命名#time.sleep(2)ws2.Shapes(pic_shape_name[j]).Copy()    # 复制移动的图片Picture 1img = ImageGrab.grabclipboard()  # 获取图片数据print('正在保存图片单元格为: '+ 'B'+str(i)+':B'+str(i))try:#img.save(image, "JPEG")img.save(pic_name0) # 图片另存为except AttributeError:print("Couldn't save image {}".format(pic_name0))#img.save(root_path + pic_name0) # 图片另存为#报错123 180个图片 AttributeError: 'NoneType' object has no attribute 'save'#    ws2.Shapes(pic_shape_name[j]).Copy()    # 复制移动的图片Picture 1#  File "C:\Users\joolan\AppData\Local\Temp\gen_py\3.7\00020813-0000-0000-C000-000000000046x0x1x9\Shape.py", line 52, in Copy#return self._oleobj_.InvokeTypes(551, LCID, 1, (24, 0), (),)#pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2147221040), None)##pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '类 Worksheet 的 Paste 方法无效', 'xlmain11.chm', 0, -2146827284), None)#File "C:\Python37\lib\site-packages\win32com\client\__init__.py", line 467, in _ApplyTypes_#self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),#pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '类 Range 的 CopyPicture 方法无效', 'xlmain11.chm', 0, -2146827284), None)#pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '类 Workbook 的 SaveAs 方法无效', 'xlmain11.chm', 0, -2146827284), None)#time.sleep(1) #if j > 5:#    exit()print('写入有效商品图片个数:'+str(j))wb2.SaveAs('copy.xlsx') # excel文件另存为copy.xlsx
wb2.Close() #关闭工作薄,不保存
excel.Quit()  #退出excel

#pythoncom.CoUninitialize() # 关闭多线程
原文:
https://ranjuan.cn/python-save-excelarea-pic/

python批量导出excel区域图片相关推荐

  1. VBA应用笔记 -- 批量导出excel工作表中的图片

    业务场景: 日常工作中,我们可能会遇到需要批量导出excel表中的图片的情况,按照网友的做法,批量导出excel中的图片主要有几种方法: 解压缩方法:可以通过将excel文件转成rar压缩文件,解压后 ...

  2. python批量处理excel数据_Python批量处理Excel,真香(超实用!)

    本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...

  3. python批量处理excel文本改为数字_Python批量修改Excel中的文件内容

    import os import xlrd from xlutils.copy import copy def base_dir(filename=None): return os.path.join ...

  4. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  5. Java 批量导出PPT为图片,并合并生成PDF

    Java 批量导出PPT为图片,并合并生成PDF 最近有小伙伴需要把PPT打印,但苦于PPT太多,浪费纸张,所以特别写了这个合并多张PPT到一张A4纸上并生成PDF方便打印的程序: 前期准备 把PPT ...

  6. java 导出excel 附带图片

    java 导出excel 附带图片,思路将后台数据里保存的图片url转为file ,添加到excel里导出 代码示例 String imgPath = filePath +item.getFilePa ...

  7. POI批量导出Excel ZIP打包下载

    POI批量导出Excel ZIP打包下载 1.公共抽象导出Excel类 需要自己实现两个抽象方法: getColumValueForColunmName : 扩展方法:根据名称判断来做值得转换 比如: ...

  8. EasyExcel根据自定义模板导出Excel(包含图片、表格)

    使用EasyExcel根据模板导出excel,包含图片.表格 提示:其实使用EasyExcel根据模板导出一个excel并不难,难点在于指定图片的位置 文章目录 使用EasyExcel根据模板导出ex ...

  9. java导出excel带图片_JAVA的poi实现模版导出excel(带图片).doc

    JAVA的poi实现模版导出excel(带图片) 下面是本人使用java的poi实现使用模板到处excel,内容包含图片,使用两种不同的方式实现其到处excel.但是使用jxl实现到处excel只能到 ...

最新文章

  1. hdu 1548 A strange lift
  2. node.js学习笔记1
  3. 你的心思,我如何懂得?
  4. VTK:可视化算法之Office
  5. Discuz x2.5目录结构注释
  6. 「兼容M1」Royal TSX for Mac 最强远程管理软件
  7. IT软件创业之 -- 小软件项目也有风险、也会失败、也会损兵折将
  8. Java程序发生异常就挂了吗?
  9. 快来,女神节已过,这边的大奖还没人领~【每一个女性都值得被赞美】 ——用ADC制奖状,赢大奖
  10. ATX电源的工作原理
  11. 什么是WIFI 探针?WIFI 探针的用途有哪些?
  12. MGRE环境下的OSPF (实验超详解)
  13. echarts地图下钻与回钻
  14. Linux 常用系统故障(修复MBR扇区故障、修复GRUB引导故障、遗忘root用户密码、修复文件系统、磁盘配额等)
  15. Threejs实现模拟河流,水面水流,水管水流,海面
  16. 登录《北京市社会保险网上服务平台》的手机号销号了去哪里更改
  17. 请给我一本防爆仓秘籍@中本葱
  18. java多个IO流性能PK——MappedByteBuffer问鼎
  19. 除权除息和复权复息的内容总结
  20. SRPG游戏开发(二十三)第七章 寻路与地图对象 - 一 A*寻路算法(A* Search Algorithm)

热门文章

  1. 用二十来页PPT做个年终总结及规划
  2. 2千兆光+12千兆电导轨式网管型X-Ring一键环网工业级以太网交换机
  3. 【语音信号处理二】共振峰
  4. 安装Office OneNote 2007
  5. 快速解决tensorflow与tensorboard版本不兼容问题
  6. 智能车元素的处理方案:环岛,坡道,三叉,以及直道和弯道的速度控制方案
  7. 条码打印软件如何将Excel导入使用
  8. 怎么计算机械表的正负时差,机械表时差多少为正常?怎么测量误差呢?-复刻表问答-世家表行官网...
  9. roslaunch卡死
  10. 第七次培训任务:esp8266(4)云服务器(sscom5.13.1)的操作