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