使用openpyxl更改所有单元格的样式

Mik*_*ike 5 python excel openpyxl

我正在将openpyxl 2.0.3与python2.7一起使用。

有没有一种方法可以将样式应用于工作表中的每个单元格?可以说我想更改所有单元格的字体,类似于我打开excel文档,按ctrl + a,右键单击并更改格式的方式。

fly*_*ire 6

更新:DEFAULT_FONT现在可以导入注释显示类并在保存工作簿之前直接设置属性:

from openpyxl.workbook import Workbook
from openpyxl.styles import DEFAULT_FONT
wb = Workbook()
wb.active['B3'] = "Hello"
DEFAULT_FONT.name = "Arial"
wb.save("DemoDefaultFont.xlsx")
Run Code Online (Sandbox Code Playgroud)

需要更多才能同时设置多个属性。从临时对象复制属性Font

from openpyxl.workbook import Workbook
from openpyxl.styles import DEFAULT_FONT
from openpyxl.styles import Font
wb = Workbook()
wb.active['B3'] = "Hello"
_font = Font(name="Arial", sz=10, b=True)
{k: setattr(DEFAULT_FONT, k, v) for k, v in _font.__dict__.items()}
wb.save("DemoDefaultFont.xlsx")
Run Code Online (Sandbox Code Playgroud)

更多详细信息:https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/fonts.html ?highlight=default_font

  • 上述导入在 OpenPyXL 3.0.7、Python 3.9.7 上对我不起作用。我已经成功使用“from openpyxl.styles import DEFAULT_FONT”。事后,改变价值观是轻而易举的事。例如`DEFAULT_FONT.size = 11` (3认同)

Cha*_*ark 4

没有方法可以做到这一点。目前最好的方法可能是为所有相关的列或行设置样式

\n
style = Style(\xe2\x80\xa6)\nfor col in 'ABCD':\n     ws._styles[col] = style\n
Run Code Online (Sandbox Code Playgroud)\n

我认为我们将在即将发布的版本中致力于改进处理风格。

\n