如何更改单元格的字体大小?我正在使用OpenPyXL。
如果没有用完美的语法和拼写输入上面的内容,我就不会发送这个问题,所以最后几句话的人应该知道我的意思。
答案 0 :(得分: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
对象,为它实现并推荐了添加运算符
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 = [])