前言

用openpyxl处理Excel数据还是蛮舒服的。同时也可以插入图片,不过插入图片有个弊端,那就是,它只是把图片按比例缩小了。要看大图你得拉大来看,并不舒服。于是,想着能否插入对象文件。双击直接就能够打开图片来看。emmmm,好吧。果断使用win32com封装了个方法出来。

Excel插入对象文件

废话不多说,上代码

# 这个模块是用于excel表格操作的,
# 包括插入文件对象的
# 另存xls为xlsximport os
import win32com.clientclass ExcelInsert(object):def __init__(self, excel_file_path, sheet_name):"""构造函数:param excel_file_path: 指定要操作的excel表格:param sheet_name: 指定要操作的excel表格的表:returns: None"""self.filename = excel_file_path# self.excel = win32com.client.Dispatch('Excel.Application')  # 这个得在gencache.EnsureDispatch('Excel.Application') 有生成对应的缓存文件temp/gen_py/文件夹之后才能使用self.excel = win32com.client.gencache.EnsureDispatch('Excel.Application')  # 如果没有缓存文件,则生成缓存文件# self.excel.Visible = True  # 显式打开excel 调试设置Trueself.book = self.excel.Workbooks.Open(excel_file_path)self.sheet_name = self.book.Worksheets(sheet_name)def insert_obj(self, insert_file_path, col, row, auto_wh=False):"""向Excel文件里面插入对象:param insert_file_path: 要插入文件的路径,可以插入图片、也可以插入文档等:param col: 指定要插入的列:param row: 指定要插入的行:param auto_wh: 根据对象文件自适应行高:returns: None"""shape = self.sheet_name.Shapes.AddOLEObject(Filename=insert_file_path, Link=False)  # 插图片附件shape.Left = self.sheet_name.Cells(row, col).Left  # 把定位附件到指定单元格 单位:磅shape.Top = self.sheet_name.Cells(row, col).Topif auto_wh:self.sheet_name.Rows(row).RowHeight = shape.Height  # 行高self.sheet_name.Columns(col).ColumnWidth = shape.Width  # 列宽def save(self, name=None):"""保存文件,name为自己想要命名文件的名字,不传的话,默认为"源文件名字+(new)":param name: 传入自己要命令的文件名:returns: None"""if not name:path_list = self.filename.split(".")path_list[-2] = path_list[-2] + "(new)"path = ".".join(path_list)else:path = os.path.join(os.getcwd(), name)if os.path.exists(path):os.remove(path)self.book.SaveAs(path)self.book.Close()self.excel.Application.Quit()def __del__(self):passif __name__ == '__main__':a = ["A", "B", "C", "D", "E"]path = os.getcwd()filename = "../temp/test.xlsx"filename = os.path.join(path, filename)img_name = os.path.join(path, "../temp/baiyu_logo.jpg")# img_name = os.path.join(path, "../temp/Aword.docx")excel = ExcelInsert(filename, "Sheet1")for col in a:excel.insert_obj(img_name, col, 20)excel.save()  # 调用保存方法

源代码例程

https://github.com/BaiYu96/ExcelOpera.git

结束语

1、有时候觉得当程序员也挺好的,能够通过自己的双手,通过Google,搜索出你要的解决方案,然后灵活的使用ctrl+c,ctrl+v把想法实现hhhhh

2、太难了,连excel表格都能有对象了。我。。。转念一想,程序员还怕没对象?new一个出来就好了hhhhhh

【python办公自动化】如何在Excel表格里面插入对象相关推荐

  1. C# 如何在Excel表格中插入、编辑和删除批注(三)删除Excel批注

    删除Excel批注 给大家推荐一些有用的桌面小工具,能很好地管理控制桌面 下载地址:http://www.iis7.com/a/lm/fzwjj/ [C#] //实例化Wordbook类实例并加载Ex ...

  2. 怎样在表格中选出同一类_如何在excel表格中同一个框选择下一行 - 卡饭网

    在excel表格中怎样设置选择下拉列表? 在excel表格中怎样设置选择下拉列表? 在excel表格制作中,经常会遇到固定选项输入,例如性别( 男  女),婚否(是, 否),在制作考勤表的时候也可以利 ...

  3. 【Python】通过xlsxwriter向excel表格中插入图片、本地超链接

    通过python向excel表格中插入图片,且设置图片的本地超链接. 代码亲测可行,python版本为3.6.3 import xlsxwriter# 创建一个新Excel文件并添加一个工作表. wo ...

  4. Python办公自动化,自动更新表格,告别繁琐!

    大家好,又到了Python办公自动化专题 . 今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就 是 每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第 ...

  5. 计算机上的符号并不代表分数,如何在Excel里轻松插入符号、分数和特殊字符

    如何在Excel里轻松插入符号.分数和特殊字符 发布时间:2011-11-14 09:59:25   作者:佚名   我要评论 Excel中使用"符号"对话框可以插入键盘上没有的符 ...

  6. 销售额总和的分类汇总计算机操作,销售数据excel表格分类-如何在EXCEL表格中按类别小计?...

    如何在EXCEL表格中按类别小计? EXCEL中把数据分类步骤如下: 1.在产品销售情况表中,完成对各产品销售额总和的分类汇总,汇总结果显示在数据下方. 2.选择数据--分类汇总. 3.得到分类汇总对 ...

  7. html背景图总是在字的下面,怎么我在excel表格里插入背景图片后图片不是显示在文字下面而跑到文字右边的...

    怎么我在excel表格里插入背景图片后图片不是显示在文字下面而跑到文字右边的以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧 ...

  8. wps表格户主序号_如何在Excel表格中对自动设置编号(wps excel查找)

    WPS如何设置产品编码规则 打开一个编好的WPS文档如下: 如果只样的话,文档显的太乱了,条理也不清晰,因此需要文档进行编号,选中文档,鼠标右键,弹出下拉菜单: 选择项目符号和编号,弹出符号和编号对话 ...

  9. 如何在Excel表格中做柱表图

    如何在Excel表格中做柱表图 目录 如何在Excel表格中做柱表图 1.框选表格区域(不能款框选含有合并单元格区域) 2.选择"插入"选项卡中"柱形图"然后选 ...

最新文章

  1. android studio转载文章
  2. 爱奇艺称告别唯流量时代 正式关闭显示前台播放量
  3. producer send源码_Kafka源码深度剖析系列(七)——Producer核心流程初探
  4. NYOJ 864 统计
  5. python对文件的操作模式_python对文件的操作
  6. OpenCV训练分类器
  7. 内存泄漏分析_调查内存泄漏第2部分–分析问题
  8. 一码空传临时网盘源码-带提取码功能
  9. ajax的原理和运行机制
  10. iphone实用配置工具_除了让你买买买,苹果官网还隐藏着这些实用网页工具
  11. 基于FPGA的QAM调制
  12. java entity tostring_EntityUtils.toString(entity)处理字符集问题解决
  13. Qemu Fuzzer学习
  14. 公积金单位账号和个人账号
  15. 无符号数与带符号数的相加减
  16. 西泽金融: 银行业的下半场
  17. 通俗易懂谈上拉电阻与下拉电阻
  18. DL4J实战之三:经典卷积实例(LeNet-5)
  19. 各种PLC通讯介质和协议介绍
  20. html表白earth,表白的英文句子

热门文章

  1. 最新搜狗泛目录程序,搜狗站群泛目录,搜狗蜘蛛蜘蛛池(图文)
  2. C语言中宏定义宏编译的使用#if,#ifdef,#ifndef,#elif,#else,#endif,defined使用详解,可以实现和if else一样的效果
  3. 英文双引号引发的杯具
  4. WIN7 启动屏幕键盘
  5. matlab主成分分析散点图_主成分分析(PCA)及其在MATLAB中的实现
  6. [教程] 使用 Chrome 从 Google Drive 进行多线程、断点续传下载
  7. 手机QQ浏览器解析A链接访问过后颜色发生变化的Bug
  8. Spark动态加载外部资源文件
  9. 我的python面试简历
  10. 为什么沃尔玛等零售商会结成移动支付联盟 ?