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

时间:2016-04-04 12:02:23

标签: python python-2.7 xlsxwriter

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

3 个答案:

答案 0 :(得分:2)

如果您还以单元格格式指定\n,则应该使用字符串中的text_wrap换行符(请参阅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()

输出:

enter image description here

注意,当您在像这样的单元格中包装文本时,Excel通常会自动调整行高以进行补偿,除非您已手动设置行高。我在示例中添加了一个注释掉的行,以显示如何明确设置行高。

P.S。 <{1}}并非必需。

答案 1 :(得分:0)

可能是因为EOF字符可能是\r\r\f\r\n

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

这取决于系统和用于可视化文件的工具。

答案 2 :(得分:0)

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

所以,而不是

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

您应该考虑以下内容:

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