2013-09-16 1 views
13

Python: Есть ли способ написать многострочные строки в ячейку excel только с модулем xlwt? (Я видел ответы, предлагающие использовать модуль openpyxl)Запись многострочных строк в ячейки с помощью модуля xlwt

Метод sheet.write() игнорирует escape-последовательность \ n. Итак, просто xlwt, возможно ли это? Заранее спасибо.

ответ

20

Я нашел ответ в python-excel Google Group. Используя sheet.write() с необязательным аргументом style, позволяющим переносить слово для ячейки, делает трюк. Вот минимальный рабочий пример:

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

В то время как в камере А1 показывает HelloWorld без LineBreak, ячейка B1 показывает Hello\nWorld (т.е. с LineBreak).

+0

Woohoo! Благодаря :) – user2782845

0

Есть несколько вещей, которые вы можете попробовать:

  1. Окно обрабатывает новые строки по-разному для Unix/Linux. Хотя символ \n (строка строки) является стандартным методом Unix, а также используется в Python, для Windows требуется возврат каретки и фид строки. Поэтому вы можете попробовать заменить \n на \r\n.
  2. Если это не сработает, попробуйте заменить их символами ascii {chr (13) и chr (10)} внутри формулы.
  3. Если это все еще не работает, возможно, стоит попробовать this article, который предлагает более продолжительный способ приближения к проблеме.