openpyxl读取图片和超链接-详细版

天涯浪子 提交于 2020-01-31 04:05:58

网上资料比较少,自己的办法可能比较笨,但是坚持原创。

应用场景是通过读取excel格子的内容去按预定格式生成word文档,对于对文档格式要求严格的部分行业~~有一定的意义。

add_paragraph和add_run这类基础的不说,CSDN已经很多,主要解决openpyxl如何跨sheet读取表格、图片等数据

使用超链接

自己在xlsx中第二个sheet中创建一个表格,选中表格数据后右键-定义位置,即可看到引用位置

=Sheet2!$A$1:$B$5

我的程序是读取sheet1的内容,所以在sheet中插入一个超链接,选择本地文档位置-sheet2,将刚才的引用位置复制进去-确定。

这样在sheet1中的超链接,点击后将跳转到sheet2,并且通过openpyxl读取超链接时,才能得到这个引用位置。自己也可以试试不加引用位置的结果。(其实和锚点的作用类似)

这样得到引用位置后,可用正则表达式,得到python跳转打开sheet2后要读哪些格子内容,这个就是普通读取table的内容,不在赘述。

eval={'A':1,'B':2,'C':3,'D':4,'E':5,'F':6}  #翻译格子数的字典
wb=load_workbook('1.xlsx')
sheet=wb['Sheet1']
t=sheet.cell(7,5).hyperlink.location        #通过超链接得到引用位置
res1=re.findall("!(.*?):",t)[0]            #通过正则得到格子左上角
res2=re.findall(':(.*?)$',t)[0]            #通过正则得到格子右下角
r1=str(eval[res1[1]])+' '+res1[3:]        #翻译成第几行、第几列(可选)
r2=str(eval[res2[1]])+' '+res2[3:]        #同上

=============我是分割==============

图片的超链接比较简单

直接在sheet1中插入超链接,则超链接用python读出来的就是图片名称。

将图片放在与py程序同一个文件夹,直接就可插入到docx文件中。

 

有更好方法欢迎交流。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!