How to save in *.xlsx long URL in cell using Pandas How to save in *.xlsx long URL in cell using Pandas python python

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()