How to save in *.xlsx long URL in cell using Pandas
You can create an ExcelWriter object with the option not to convert strings to urls:
writer = pandas.ExcelWriter(r'file.xlsx', engine='xlsxwriter',options={'strings_to_urls': False})df.to_excel(writer)writer.close()
I tried it myself and got the same problem. You could try to create a temp csv file and then use xlsxwriter to create an excel file. Once done then delete the tmp file. xlsxwriter has a write_string method that will override the auto hyperlinking that excel does. This worked for me.
import pandas as pdimport csvimport osfrom xlsxwriter.workbook import WorkbookinData = "C:/Users/martbar/Desktop/test.xlsx"tmp = "C:/Users/martbar/Desktop/tmp.csv"exFile = "C:/Users/martbar/Desktop/output.xlsx"#read in datadf = pd.read_excel(inData)#send to csvdf.to_csv(tmp, index=False)#convert to excelworkbook = 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 fileos.remove(tmp)
From the docs in the section: "Passing XlsxWriter constructor options to Pandas", 'strings_to_urls': False
is now specified like this:
writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter', engine_kwargs={'options': {'strings_to_urls': False}})
and then keep doing what the accepted response suggests here:
df.to_excel(writer)writer.close()