【问题标题】:openpyxl - How to color a single character?openpyxl - 如何为单个字符着色?
【发布时间】:2018-01-24 01:12:31
【问题描述】:

使用 Python 和 openpyxl:

是否可以为单元格文本中的单个字符着色? 我想将钻石 (U+25C6) 的字符着色为红色。 目前我正在这样做:

WorkSheetOne.cell(row=CombBarLineDataOffsetFromTop+6, column=1, value="Monthly Average -◆-") # you should see the diamond here
WorkSheetOne['A' + str(CombBarLineDataOffsetFromTop+6)].font = Font(bold=True)
WorkSheetOne['A' + str(CombBarLineDataOffsetFromTop+6)].alignment = Alignment(horizontal="center")

它显示了菱形,我可以编辑 excel 文件并使菱形变为红色,但我有很多这样的东西,我需要让 Python 来做。

【问题讨论】:

  • Excel 单元格可以包含 RTF 文本。 This question about EPPlus 展示了如何将具有不同样式的 RTF 部分添加到同一个单元格中。 openpyxl doesn't seem to support thisxlsx 只是“只是”一堆压缩的 XML 文件。您可以创建一个具有所需样式的 Excel 工作表,使用 openypyxl 打开它并检查单元格的内容
  • 无法在 openpyxl 中完成,也没有计划支持它。
  • 即使您使用set_explicit_value 将值设置为正确的 XML 字符串,openpyxl 也会将其视为字符串并使用 HTML 编码存储它。另一方面,Xlsxwriter supports rich text。您应该考虑更改包或避免富文本

标签: python python-3.x openpyxl


【解决方案1】:

据我所知,单元格是您可以应用样式的最小部分。

您可以在 VBA 中编写脚本,并通过这种方式发挥作用。

【讨论】:

  • Excel 的格式是一个压缩的 XML 文件包。如果可以使用 Excel 完成,则该值在文件中可见并且可以复制。 VBA 不能做 Excel 本身不能做的事情
  • 也许我不够严格。问题是关于使用特定的库。在该库中,您不能在部分单元格上应用样式。但是,您可以添加 VBA。您可以将样式添加到 XML 文件,但是在使用库时更改将会丢失。所以 - 你可以选择你的毒药。
  • 我明白你的意思。这是不正确的。您不需要 VBA 来设置任何样式。在大多数情况下,您也不能使用 VBA - 它需要本地安装 Excel、具有宏和安全权限的工作表才能运行。在任何需要 Excel 的 Web 服务器和大多数桌面方案中,您都无法做到这一点。
  • 我能说的 - 对我有用。如果你不同意。没问题 - 至少在我身边。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2012-10-21
  • 2017-10-02
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
相关资源
最近更新 更多