如何使用xlwt将富文本放在合并的单元格中

时间:2017-01-20 18:48:37

标签: python excel xlwt

跟踪an earlier question关于我需要的一部分功能,我正在尝试将富文本放在使用xlwt包创建的Excel工作表的合并单元格中。我知道sheet.write_merge()和(在之前的问题的帮助下)我找到了sheet.write_rich_text(),但似乎没有办法做到这两点。 Excel支持它,所以至少在理论上xlwt应该可以做到这一点。那里的功能是什么,我还没有找到它?

谢谢!

1 个答案:

答案 0 :(得分:0)

我仍然没有在API中找到sheet.write_rich_text_merge()方法来完成我需要在这里做的事情,但我确实通过尝试一种似乎有效的方法找到了。你要做的是

  1. 使用标志创建工作表以允许覆盖单元格
  2. 将一个虚拟值写入范围
  3. 使用值序列
  4. 替换范围中第一个单元格的内容

    例如:

    import xlwt
    
    book = xlwt.Workbook()
    style = xlwt.easyxf("align: wrap true, horiz left, vert top")
    comment_font = xlwt.easyfont("italic true, color_index green")
    sheet = book.add_sheet("Merged Rich Text", cell_overwrite_ok=True)
    sheet.col(0).width = sheet.col(1).width = 7500
    drug_name = "atezolizumab"
    comment = "For NCT01375842; No info available at this time"
    segments = (drug_name, "\n", ("[%s]" % comment, comment_font))
    other_names = ("anti-PD-L1 monoclonal antibody", "MPDL3280A", "RG7446")
    sheet.write_merge(0, len(other_names) - 1, 0, 0, "", style)
    sheet.row(0).set_cell_rich_text(0, segments, style)
    for i, name in enumerate(other_names):
        sheet.write(i, 1, name, style)
    fp = open("repo.xls", "wb")
    book.save(fp)
    fp.close()
    

    最好有一个API函数,它通过一次调用处理合并和富文本格式,而不需要禁止检查覆盖单元格,但是如果你总是小心谨慎地测试你的代码注释set_cell_rich_text()调用并删除标记以允许单元格覆盖,您仍然可以捕获错误覆盖单元格中的其他错误。