如何使用 xlwt 将富文本放入合并单元格中
How to put rich text in a merged cell using xlwt
跟进 an earlier question 我需要的功能子集,我试图将富文本放入使用 xlwt 包创建的 Excel 工作表的合并单元格中。我知道 sheet.write_merge()
并且(在前面那个问题的帮助下)我找到了 sheet.write_rich_text()
但似乎没有办法同时做到这两点。 Excel支持,所以至少理论上xlwt应该可以做到。那里有功能但我还没找到吗?
谢谢!
我仍然没有在 API 中找到一个 sheet.write_rich_text_merge()
方法来完成我在这里需要做的事情,但我确实通过试验一种似乎有效的方法找到了。你要做的是
- 创建带有标志的工作表以允许覆盖单元格
- 将虚拟值写入范围
- 用值序列替换范围内第一个单元格的内容
例如:
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()
调用并删除允许单元格覆盖的标志来测试您的代码,您仍然能够在其他地方捕获单元格被错误覆盖的错误。
跟进 an earlier question 我需要的功能子集,我试图将富文本放入使用 xlwt 包创建的 Excel 工作表的合并单元格中。我知道 sheet.write_merge()
并且(在前面那个问题的帮助下)我找到了 sheet.write_rich_text()
但似乎没有办法同时做到这两点。 Excel支持,所以至少理论上xlwt应该可以做到。那里有功能但我还没找到吗?
谢谢!
我仍然没有在 API 中找到一个 sheet.write_rich_text_merge()
方法来完成我在这里需要做的事情,但我确实通过试验一种似乎有效的方法找到了。你要做的是
- 创建带有标志的工作表以允许覆盖单元格
- 将虚拟值写入范围
- 用值序列替换范围内第一个单元格的内容
例如:
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()
调用并删除允许单元格覆盖的标志来测试您的代码,您仍然能够在其他地方捕获单元格被错误覆盖的错误。