我该如何改变单元格的字体大小?我正在使用OpenPyXL。
如果不用完美的语法和拼写打出上述内容,就不能发送这个问题。所以最后几个词是让人们知道我的意思。
from openpyxl.styles import Font
fontStyle = Font(size = "10")
ws.cell(row = 1, column = 1, value = 'Test Text').font = fontStyle
我正在使用openpyxl版本:2.3.2
在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
。
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)
Openpyxl样式化可以为您实现这一点!
cell.style.font.size = "font size goes here as integer"