Writing multi-line strings to cells using xlwt module
I found the answer in the python-excel Google Group. Using sheet.write()
with the optional style
argument, enabling word wrap for the cell, does the trick. Here is a minimum working example:
import xlwt
book = xlwt.Workbook()
sheet = book.add_sheet('Test')
# A1: no style, no wrap, despite newline
sheet.write(0, 0, 'Hello\nWorld')
# B1: with style, there is wrap
style = xlwt.XFStyle()
style.alignment.wrap = 1
sheet.write(0, 1, 'Hello\nWorld', style)
book.save('test.xls')
While in cell A1 shows HelloWorld
without linebreak, cell B1 shows Hello\nWorld
(i.e. with linebreak).
If you don't use XFStyle and instead easyxf it's done like this:
import xlwt
style_head = xlwt.easyxf('alignment: wrap True')
row = 1
cell = 1
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet()
sheet.write(row, cell, 'cell value', style_head)