Я использую openpyxl 2.0.3 с python2.7.
Есть ли способ применить стиль к каждой ячейке листа? Допустим, я хочу изменить шрифт всех ячеек, подобно тому, как я открываю документ Excel, нажимаю ctrl+a, щелкаю правой кнопкой мыши и меняю формат.
Я использую openpyxl 2.0.3 с python2.7.
Есть ли способ применить стиль к каждой ячейке листа? Допустим, я хочу изменить шрифт всех ячеек, подобно тому, как я открываю документ Excel, нажимаю ctrl+a, щелкаю правой кнопкой мыши и меняю формат.
Нет способа сделать это. На данный момент лучшим подходом, вероятно, было бы установить стиль для всех соответствующих столбцов или строк.
style = Style(…)
for col in 'ABCD':
ws._styles['A'] = style
Думаю, мы будем работать над улучшением стилей обработки в следующих релизах.
Я понимаю, что этот вопрос эффективно меняет шрифт листа (книги?) по умолчанию. По сути, это то же самое, что мне нужно изменить шрифт по умолчанию, чтобы он соответствовал другим документам Excel. Есть много подобных вопросов об изменении шрифта на основе ячейки или столбца:
Этот прием заключается в изменении шрифта рабочей книги по умолчанию. Ясно, что это не поддерживается API, но я рад переопределить пакет. Я начал с поиска шрифта Calibri, который я не использую на своем компьютере:
Две строки в ..\openpyxl\styles\__init__.py
выглядят уместно:
from .fonts import Font, DEFAULT_FONT
from .named_styles import NamedStyle
Изменение в fonts.py
:
# Hack default font
# DEFAULT_FONT = Font(name="Calibri", sz=11, family=2, b=False, i=False,
DEFAULT_FONT = Font(name="Calibri", sz=10, family=2, b=False, i=False,
color=Color(theme=1), scheme="minor")
Другие места, на которые стоит обратить внимание: named_styles.py
, stylesheet.py
, styleable.py
, theme.py
и workbook.py
.
Я был бы признателен за любой совет, чтобы привести в порядок константу в fonts.py
, вызываемую из __init__.py
.
DEFAULT_FONT
и заменить его чем-то вроде DEFAULT_FONT.name = "Arial"
? Я только что сделал это, это работает (openpyxl 3.0.7, Python 3.6).
- person David Guillot; 07.07.2021