我提取了一个Excel单元格的字体对象,看起来是这样的:
<openpyxl.styles.fonts.Font object> Parameters:
name='Calibri',
charset=None,
family=2.0,
b=False,
i=False,
strike=None,
outline=None,
shadow=None,
condense=None,
color=<openpyxl.styles.colors.Color object> Parameters:
rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme',
extend=None,
sz=12.0,
u='single',
vertAlign=None,
scheme='minor'
它由15个属性组成,其中一个是另一个样式对象(颜色对象)。
是否可以使用此字体对象设置 Excel 单元格的字体,而无需提取每个属性并单独应用它。
有点像
cell.font = <openpyxl.styles.fonts.Font object> Parameters: name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object> Parameters: rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme', extend=None, sz=12.0, u='single', vertAlign=None, scheme='minor'
代替
cell.font = Font(size=12)
cell.font = Font(underline="single")
etc.
免责声明:我使用的是 openpyxl 2.5.12,我无法升级。
我降级并检查了提到的版本是否有任何问题
2.5.12
,但它有错误。color
部分设置了某些不兼容的值。这导致 Excel 在打开时修复工作表。style1
在这里没有引起任何问题。
测试代码
import openpyxl
from openpyxl.styles import Font, Color
print(openpyxl.__version__)
wb = openpyxl.load_workbook("foo.xlsx")
ws = wb['Sheet1']
cell_A1 = ws['A1']
cell_B1 = ws['B1']
style1 = Font(
name="Calibri",
charset=None,
family=2.0,
b=True,
i=False,
strike=None,
outline=None,
shadow=None,
condense=None,
color=Color(rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type="theme"),
extend=None,
sz=12.0,
u="single",
vertAlign=None,
scheme="minor"
)
style2 = Font(
b=True,
charset=None,
color=Color(rgb='FF00FF00',
type='rgb'),
condense=None,
extend=None,
family=2.0,
i=True,
name="Arial",
outline=None,
scheme="minor",
shadow=None,
strike=True,
sz=22.0,
u="single",
vertAlign=None,
)
cell_A1.font = style1
cell_B1.font = style2
wb.save("foo_out.xlsx")