将列表中的项目添加到由新行分隔的单元格

Adding items from list to a cell separated by new line

我有一个包含一些值的列表,例如。 values = ['1', '2', '3']。 我尝试将它们放入一个单元格中,但每个值都在新行中,所以它应该看起来像:
1
2
3
在一个牢房里。 我正在尝试这样做:
sheet.write(1, 11, '\n'.join(values), style2)
但它似乎不起作用,因为项目是在一行中添加的,所以它看起来像:
123

可能是因为EOF字符,可以预期是\r,或者\r\f,或者\r\n:

sheet.write(1, 11, '\r\n'.join(values), style2)

这取决于系统,以及您用来可视化文件的工具。

根据这个基本 xlsxwriter tutorial,您必须提供每个值的坐标,而不是包含不同值的 iterable。

所以,而不是

sheet.write(1, 11, '\n'.join(values), style2)

你应该考虑这样的事情:

for offset, value in enumerate(values):
    sheet.write(1 + offset, 11, value, style2)

如果您还在单元格格式中指定 text_wrap,则它应该可以在字符串中使用 \n 换行符(请参阅 docs):

import xlsxwriter

workbook = xlsxwriter.Workbook('wrap.xlsx')
worksheet = workbook.add_worksheet()
wrap_format = workbook.add_format({'text_wrap': True})

values = ['1', '2', '3']

# Set an explicit row height for the wrapped text, if required.
#worksheet.set_row(1, 45)

worksheet.write(1, 1, '\n'.join(values), wrap_format)

workbook.close()

输出:

请注意,当您像这样在单元格中换行时,Excel 通常会自动调整行高以进行补偿,除非您已经手动设置了行高。我在示例中添加了注释行以显示如何显式设置行高。

P.S。 \r 不是必需的。