【问题标题】:Adding items from list to a cell separated by new line将列表中的项目添加到由新行分隔的单元格
【发布时间】:2016-04-04 12:02:22
【问题描述】:

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

【问题讨论】:

  • 好像不行?您是否尝试过使用电子表格编辑器打开文件?

标签: python python-2.7 xlsxwriter


【解决方案1】:

如果您还在单元格格式中指定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 通常会自动调整行高以进行补偿,除非您已经手动设置了行高。我在示例中添加了注释行,以显示如何明确设置行高。

附: \r 不是必需的。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 它也不起作用。 '\r' 没有任何变化,'\r\f' 会出现一些奇怪的字符。我有 win7 和 pydev 编码
    • 根据this\r\n是一个可能的解决方案。
    • 仍然在一行中。我在 excel 中打开一个文件
    • 好的,我又检查了一遍,'\r\n' 正在工作,但只有在双击一个单元格后,才意识到这一点。也可以,谢谢指教。
    【解决方案3】:

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

    所以,而不是

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

    你应该考虑这样的事情:

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

    【讨论】:

    • 您是否有任何理由发布了第二个答案而不是将其集成到之前的答案中?它似乎从另一个跟进。或者如果另一个完全错误,你可以完全改变它。
    • 这不是真正相同类型的答案。上一个是关于 EOL 字符的脏插入。这个是关于正确使用包的。我应该合并它们吗?
    • 这不是我所需要的,因为我希望它在一个单元格中,在一个 excel 行中,但在该单元格中有 n 个新行,所以 ` 1 + offset ` 不是解决方案。
    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多