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