网上资料比较少,自己的办法可能比较笨,但是坚持原创。
应用场景是通过读取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文件中。
有更好方法欢迎交流。