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

浙公网安备 33010602011771号