Writing text wrapped Excel Files using Python

12,933

You can use pandas with the xlsxwriter engine (the default).

You need to create a format object by calling the workbook.add_format() method as outlined in the xlsxwriter docs (link here).

Once you've used pandas.DataFrame.to_excel(), you can add the format using worksheet.set_column(). An example of this can be found in the xlsxwriter docs (link here).

I've provided a fully reproducible example below with the expected output.

import pandas as pd

df = pd.DataFrame({'Ticket': ['a','b','c','d'],
                  'Category': [2,1,4,3]})


writer = pd.ExcelWriter('Trial Version.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook=writer.book
worksheet = writer.sheets['Sheet1']

format = workbook.add_format({'text_wrap': True})

# Setting the format but not setting the column width.
worksheet.set_column('A:B', None, format)

writer.save()

Expected Output:

Expected Output

Share:
12,933

Related videos on Youtube

T0167
Author by

T0167

Updated on June 04, 2022

Comments

  • T0167
    T0167 almost 2 years

    I am new to Python and I was practicing by processing some CSV files and making an excel file from them. So far I can get the excel file however, I am unable to wrap the cells via python. I have tried multiple ways but none of it would work. Perhaps it is because of my poor understanding of Python. Can anyone suggest me how can I wrap text while writing the excel file? And please explain the code along the way? The error that i am getting for the following code is: 'str' object has no attribute 'alignment'

    This is what I have done so far:

    df=pd.DataFrame(list(zip(Dticketnumberlist,Dcategorylist)), 
                 columns=['Ticket', 'Category'])
    
    writer = pd.ExcelWriter('Trial Version.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1')
    workbook=writer.book
    worksheet = writer.sheets['Sheet1']
    
    wrap_alignment = Alignment(wrap_text=True)
    cell.alignment = wrap_alignment
    
  • T0167
    T0167 over 5 years
    I have went through this one actually. However I am trying to put the dataframe values in to the cell. In this example they have directly written the string.
  • Abeer Sul
    Abeer Sul almost 3 years
    Thanks! finally something works! :D all stackoverflow Q/A give syntax errors!!