如何使用Pandas在单元格中保存* .xlsx长URL

例如我读取Excel文件到DataFrame 2列(id和URL)。 input文件中的URL就像文本一样(没有超链接):

input_f = pd.read_excel("input.xlsx") 

看看这个DataFrame里面的东西 – 所有东西都被成功读取了, input_f所有URL都input_f 。 之后,当我不想将这个文件保存到扩展

 input_f.to_excel("output.xlsx", index=False) 

我得到了警告。

Path \ worksheet.py:836:UserWarning:由于超过了Excel对URLS的限制force_unicode(url),所以忽略链接或位置/锚点> 255个字符的URL “http:// here long URL”

而在output.xlsx长URL的单元格是空的,URL变成超链接。

如何解决这个问题?

您可以创build一个ExcelWriter对象,但不能将string转换为url:

 writer = pandas.ExcelWriter(r'file.xlsx', engine='xlsxwriter',options={'strings_to_urls': False}) df.to_excel(writer) writer.close() 

我自己试了一下,得到了同样的问题。 你可以尝试创build一个临时CSV文件,然后使用xlsxwriter创build一个excel文件。 完成后,删除tmp文件。 xlsxwriter有一个write_string方法,将覆盖excel自动超链接。 这对我有效。

 import pandas as pd import csv import os from xlsxwriter.workbook import Workbook inData = "C:/Users/martbar/Desktop/test.xlsx" tmp = "C:/Users/martbar/Desktop/tmp.csv" exFile = "C:/Users/martbar/Desktop/output.xlsx" #read in data df = pd.read_excel(inData) #send to csv df.to_csv(tmp, index=False) #convert to excel workbook = Workbook(exFile) worksheet = workbook.add_worksheet() with open(tmp, 'r') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): #if you use write instead of write_string you will get the error worksheet.write_string(r, c, col) workbook.close() #delete tmp file os.remove(tmp)