如何用Python在Excel单元格中仅将字符串的一部分加粗?

6 投票
2 回答
6583 浏览
提问于 2025-04-28 19:39

我正在使用win32com来填写一个Excel电子表格,里面有一些分析信息。我有一个单元格,我希望它的格式是这样的:

这是问题描述:这是你运行来解决它的命令

我似乎无法弄明白如何用Python将带有混合格式的文本放入单元格中。

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属性,但我找不到关于它的任何文档说明。

暂无标签

2 个回答

3

虽然你在问题中提到想用win32com来解决,但我想提醒一下,任何通过标题来到这里的人,其实也可以用Python的XlsxWriter来实现这个功能。

这里有个例子

这里插入图片描述

7

根据@ron-rosenfield的说法,想要实现这个功能的VBA代码看起来是这样的:

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

而且,Excel工作表的范围内有一个叫做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

你可以使用这个命令来在之后更新单元格中字符的加粗状态。

撰写回答