【问题标题】:How can I Bold only part of a string in an Excel cell with Python?如何使用 Python 仅在 Excel 单元格中加粗字符串的一部分?
【发布时间】:2014-10-21 14:36:53
【问题描述】:

我正在使用 win32com 填写包含一些分析信息的 Excel 电子表格。我有一个单元格,我想采用这种形式:

这是问题描述:这是您运行修复它的命令

我似乎不知道如何使用混合格式将文本放入单元格中。

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
ws = wb.Worksheets("Sheet1")
excel.Visible=True
sel = excel.Selection
sel.Value = "this is the command you run to fix it"
sel.Font.Bold = True
ws.Cells(1,1).Value = 'This is the problem description' + sel.Value  #makes the whole cell bold
ws.Cells(1,1).Value = "{} {}".format("this is the problem desc",sel) #makes the whole cell bold

选择对象有一个 Characters 属性,但我找不到任何关于它的作用的文档。

【问题讨论】:

  • 我什至不知道 Excel 能够像这样的混合格式...
  • 肯定是:imgur.com/uHkBnzb
  • 嗯。以前没有。
  • @DerekChadwell,您使用的是哪个 excel 版本?
  • Office 2010 套件的一部分:版本 14.0.6123.5001(32 位)

标签: python excel formatting win32com


【解决方案1】:

根据@ron-rosenfield,实现此功能的 VBA 代码如下所示:

Range("A1").Characters(2,5).Font.Bold = true 

同样,excel WorkSheet的Range有一个Characters对象属性

>>> ws.Range("A1").Characters
<win32com.gen_py.Microsoft Excel 14.0 Object Library.Characters 967192>

但是,您需要使用该对象访问范围的方法是 GetCharacters(start, length)(索引从 1 开始,通常使用 excel com 方法)

ws.Range("A1").GetCharacters(2,4).Font.Bold = True

您可以使用此命令在事后更新单元格中字符的粗体。

【讨论】:

    【解决方案2】:

    虽然您正在问题的正文中寻找 win32com 解决方案,但我会向通过标题到达这里的任何人指出,这在带有 XlsxWriter 的 Python 中也是可能的。

    Example:

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多