如何用Pandas读取含超链接的Excel文件?求可行解决方案
问题:Pandas生成含HYPERLINK的Excel读取后显示0的解决办法
我曾用Pandas DataFrame生成包含可点击URL的Excel表格,代码如下:
import pandas as pd df = pd.DataFrame({'link':['=HYPERLINK("https://ar.wikipedia.org/wiki/","wikipidia")', '=HYPERLINK("https://www.google.com", "google")']}) df.to_excel('links.xlsx')
但用pandas.read_excel读取该文件时:
import pandas as pd excelDf=pd.read_excel('links.xlsx') print(excelDf)
得到的DataFrame中link列全为0,想知道如何读取该文件,或者有没有其他用Pandas创建含可点击链接且可读的Excel表格的方法?
一、读取现有文件的方法
出现全0的原因是read_excel默认会计算Excel公式的结果,而HYPERLINK公式在未触发Excel交互时返回值为0。要读取公式本身而非计算结果,需指定openpyxl引擎并设置data_only=False(openpyxl默认data_only=True,会读取计算后的值):
import pandas as pd excelDf = pd.read_excel('links.xlsx', engine='openpyxl', data_only=False) print(excelDf)
执行后就能获取到原始的HYPERLINK公式文本。
二、生成可点击且易读取的Excel的优化方案
直接写入公式的方式在读取时容易出现异常,推荐用xlsxwriter引擎,同时保留原始URL和显示文本信息,生成的Excel既保留可点击链接,又方便后续读取:
- 构造包含显示文本和原始URL的DataFrame:
import pandas as pd df = pd.DataFrame({ '显示文本': ['wikipidia', 'google'], 'URL': ['https://ar.wikipedia.org/wiki/', 'https://www.google.com'] })
- 使用
xlsxwriter写入并添加超链接:
writer = pd.ExcelWriter('links_better.xlsx', engine='xlsxwriter') df.to_excel(writer, index=False, sheet_name='Sheet1') workbook = writer.book worksheet = writer.sheets['Sheet1'] # 定义超链接格式(蓝色下划线,模拟默认超链接样式) link_format = workbook.add_format({'color': 'blue', 'underline': 1}) # 遍历行,为单元格添加可点击链接 for row_num in range(1, len(df) + 1): text = df.loc[row_num - 1, '显示文本'] url = df.loc[row_num - 1, 'URL'] # 将链接写入第三列(可根据需求调整列索引) worksheet.write_url(row_num, 2, url, link_format, text) writer.close()
这种方式生成的Excel中,第三列是可点击的超链接,同时前两列保留了原始的显示文本和URL,后续读取时直接读取URL列即可获取原始链接,无需处理公式问题。
内容的提问来源于stack exchange,提问作者Meirna Kamal
相关产品推荐
相关产品推荐

