openpyxl 读写超链接

1、读取超链接:

strold = cell.hyperlink.target

2、写入超链接:

cell.value='=HYPERLINK("{}","{}")'.format('link','name')

3、批量替换超链接:

有时excel会自动更新excel中的超链接,有时禁用自动更新后还是会变,常试了很多办法都没有解决,用下面的代码可以批量替换过来。

from openpyxl import load_workbook


wb1 = load_workbook('fillename.xlsx')
st1 = wb1['Sheetname']
sm1 = st1['L5':'L8']
url = r'E:\work\**\***'
urlold1 = r'file:///C:\Users\25070\AppData\Roaming\Microsoft\Excel'
urlold2 = r'file:///C:\Users\25070\AppData\Roaming\Microsoft\AppData\Roaming\Microsoft\Excel'

for index,item in enumerate(sm1):
    print(index)
    for cell in item:
        if cell.value is not None:
            strold = cell.hyperlink.target
            if urlold2 in strold:
                strtemp = ''
                name = cell.value
                strtemp = strold.replace(urlold2,url)
                cell.value='=HYPERLINK("{}","{}")'.format(strtemp,name)
                print(name+':'+strtemp)
            else:
                strtemp=''
                name = cell.value
                strtemp = strold.replace(urlold1,url)
                cell.value='=HYPERLINK("{}","{}")'.format(strtemp,name)
                print(name + ':' + strtemp)

wb1.save('工程项目信息汇总表1.xlsx')

不过有个问题是:打开新的文件,cell的值是替换过来了:

 

 

 可是点击后还是会跳转到原来的链接去。。。

右击 编辑链接后,地址还是原来的地址。。。

 

 

 暂时只能 手动框选修改过的单元格,右击取消超链接后,可以正确跳转了,只是没有格式,只有原始文本。

据说可以用

cell.style = "Hyperlink"
来设置格式为蓝色带下划线,暂时没有试验。

 

 

 

 

 

 

 

可是cell

posted @ 2021-02-22 16:12  写BUG的猪  阅读(4719)  评论(0)    收藏  举报