使用xlwt modu将多行字符串写入单元格

2024-05-21 10:58:09 发布

您现在位置:Python中文网/ 问答频道 /正文

Python: 有没有办法只用xlwt模块将多行字符串写入excel单元格?(我看到了建议使用openpyxl模块的答案)

sheet.write()方法忽略转义序列。所以,就xlwt,有可能吗?提前谢谢。


Tags: 模块方法字符串答案excel建议writesheet
3条回答

有几件事你可以试试:

  1. Windows处理新行的方式与Unix/Linux不同。虽然\n(换行)字符是标准的Unix方法,也用于Python,但Windows需要回车和换行。因此,您可以尝试用\r\n替换\n
  2. 如果这不起作用,请尝试用公式中的ascii字符{chr(13)和chr(10)}替换它们。
  3. 如果这仍然不起作用,那么尝试this article可能是值得的,这意味着要用一种更为冗长的方式来解决问题。

如果不使用XFStyle,而是简单地这样做:

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)

我在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而无linebreak,细胞B1则显示Hello\nWorld(即有linebreak)。

相关问题 更多 >