如何在Python OpenPyXL中更改字体大小

3

我该如何改变单元格的字体大小?我正在使用OpenPyXL。

如果不用完美的语法和拼写打出上述内容,就不能发送这个问题。所以最后几个词是让人们知道我的意思。


4个回答

6
这对我有效:
from openpyxl.styles import Font
fontStyle = Font(size = "10")
ws.cell(row = 1, column = 1, value = 'Test Text').font = fontStyle

我正在使用openpyxl版本:2.3.2


在一张表格上进行维护比更改默认字体要花费很多精力:https://dev59.com/yGAg5IYBdhLWcg3wOo39#50195113 - undefined

4

openpyxl > 3.0 (2021)

在openpyxl中,处理样式的方式在不同版本之间有所改变。

当前版本(截至写作时为3.0.6)将字体对象视为不可变对象,并已弃用font.copy(...)函数。

因此,我找到的唯一方法是仅更改字体大小(保持其余内容不变):

ws.cell(1, 1).font += Font(size=new_font_size-ws.cell(1, 1).font)

解释

Font是一个openpyxl.descriptors.serialisable.Serialisable对象,对该对象实现了add运算符,并且被推荐使用。

DeprecationWarning: Call to deprecated function copy (Use copy(obj) or cell.obj = cell.obj + other).

唯一的问题是,使用__add__运算符将给定的字体大小与原始字体大小相加。因此必须减去原始字体大小。

带有函数的完整示例

from openpyxl import load_workbook, worksheet, cell
from openpyxl.styles import Font

def change_fontsize(cell: cell, fontsize: float):
    orig_size = cell.font.size
    cell.font += Font(size=fontsize - orig_size)

input_filename = "to_modify.xlsx"
wb = load_workbook(input_filename)
# Get first sheet
sh: worksheet = wb[wb.sheetnames[0]]
change_fontsize(sh.cell(1,1), 5)
wb.save('modified.xlsx')

稳定性说明

由于openpyxl并没有真正记录这个功能,因此我们无法保证其稳定性。目前之所以能够工作,是因为默认字体值的实现 __init__ 函数,它们都评估为False


在openpyxl 3.0.7中,单元格的默认大小值是通过"cell.font.sz"给出的。在进行减法设置之前,必须先检查是否为非空。 - undefined

1
这段代码打开一个 *.xlsx 文件并编辑单元格 'A1' 的样式,使其字体大小为 20。在新版本的 openpyxl 中,如果直接覆盖字体,则会收到错误消息。
import openpyxl
from openpyxl.styles import Font

path = 'filename.xlsx'
book = openpyxl.load_workbook(path)
ws, *ows = book
ws['A1'].font = Font(size=20)
book.save(path)

*ows 会将除第一个工作表以外的所有工作表放入列表中,如果只有一个工作表,则列表为空。(ows=[])

-3

Openpyxl样式化可以为您实现这一点!

cell.style.font.size = "font size goes here as integer"

那个没起作用。我有一个名为ws的工作表。我想要将特定单元格中的字体变大。实际的代码行是什么样的呢?例如,类似于ws['A2'].cell.font.size = "5"这样的吗? - undefined
显然,我写的确切代码不会起作用...它只是文档中的一个通用示例...我不会为你编写代码。这不是Stackoverflow的目的。 - undefined
1
属性错误:'str'对象没有'font'属性,所以不行。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接