20

Python: Is there a way to write multi-line strings into an excel cell with just the xlwt module? (I saw answers suggesting use of openpyxl module)

The sheet.write() method ignores the \n escape sequence. So, just xlwt, is it possible? Thanks in advance.

4

3 回答 3

33

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

虽然在单元格 A1 中显示HelloWorld没有换行符,但单元格 B1 显示Hello\nWorld(即有换行符)。

于 2013-09-16T07:45:28.953 回答
3

如果您不使用 XFSt​​yle 而是使用 easyxf,则可以这样完成:

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)
于 2019-07-04T12:30:23.777 回答
0

您可以尝试以下几件事:

  1. Windows 处理新行的方式与 Unix/Linux 不同。虽然\n(换行)字符是标准的 Unix 方法并且也用于 Python,但 Windows 需要回车和换行。因此,您可以尝试替换\n\r\n.
  2. 如果这不起作用,请尝试用公式中的 ascii 字符 {chr(13) 和 chr(10)} 替换它们。
  3. 如果这仍然不起作用,那么可能值得尝试这篇文章,它提出了一种更冗长的解决问题的方法。
于 2013-09-16T07:53:19.237 回答