例如,我将excel文件读入DataFrame,其中包含2列(id和URL)。输入文件中的URL类似于文本(没有超链接):
input_f = pd.read_excel("input.xlsx")
观看此DataFrame中的内容 - 所有内容均已成功阅读,所有网址均可在input_f
中找到。之后我不想将此文件保存到_excel
input_f.to_excel("output.xlsx", index=False)
我收到了警告。
路径 \ worksheet.py:836:UserWarning:忽略网址' http://此处为长网' , 链接或位置/锚点>超过Excel的255个字符 URLS force_unicode(url)的限制)
在output.xlsx中,长URL的单元格为空,URL成为超链接。
如何解决这个问题?
答案 0 :(得分:37)
您可以使用不将字符串转换为网址的选项创建ExcelWriter对象:
writer = pandas.ExcelWriter(r'file.xlsx', engine='xlsxwriter',options={'strings_to_urls': False})
df.to_excel(writer)
writer.close()
答案 1 :(得分:3)
我自己尝试了并遇到了同样的问题。您可以尝试创建临时csv文件,然后使用xlsxwriter创建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)