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

时间:2018-03-07 16:16:14

标签: python openpyxl

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

如果没有用完美的语法和拼写输入上面的内容,我就不会发送这个问题,所以最后几句话的人应该知道我的意思。

4 个答案:

答案 0 :(得分:2)

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 对象,为它实现并推荐了添加运算符

<块引用>

DeprecationWarning:调用已弃用的函数副本(使用 copy(obj) 或 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 中,因此我认为人们不能假设这将是稳定的。 目前它只是因为实现了 Fonts __init__ 函数的默认值,它们都计算 False

答案 1 :(得分:1)

这对我有用:

from openpyxl.styles import Font
fontStyle = Font(size = "10")
ws.cell(row = 1, column = 1, value = 'Test Text').font = fontStyle

我正在使用openpyxl版本:2.3.2

答案 2 :(得分:0)

Openpyxl样式可以为您实现这一目标!

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

答案 3 :(得分:0)

此代码将打开* .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 = [])