#python #excel #openpyxl
#python #excel #openpyxl
Вопрос:
Я пытался использовать Openpyxl для разделения экрана Excel по вертикали (в Excel кнопка разделения на вкладке Вид на ленте). Я не нашел никакого руководства, как это сделать. Но я нашел эту веб-страницу (https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.views.html ) и я думаю, что свойство «ySplit» может быть решением. К сожалению, я не смог понять, как правильно его использовать. Я попробовал следующий код:
wb = openpyxl.load_workbook('file.xlsx')
sh = wb.active
sh.sheet_view.pane.ySplit = 20
РЕДАКТИРОВАТЬ: но этот код не работает: AttributeError: объект ‘NoneType’ не имеет
атрибут ‘ySplit’.
Я также пробовал некоторые варианты приведенного выше кода (с ySplit). Но безуспешно. Если бы кто-нибудь мог помочь мне найти способ, как разделить экран, я был бы очень признателен.
Заранее спасибо.
EDIT2: Решение было предоставлено stovfl в комментариях. Код должен быть:
sh.sheet_view.pane = openpyxl.worksheet.views.Pane(xSplit=20.0, ySplit=None, topLeftCell='C1', activePane='topLeft', state='split')
Комментарии:
1. Это не совсем то, что вы хотели, но sh.freeze_panes=»D4″ работает, чтобы сделать ‘View’ ‘Замораживание панелей’. Я не могу найти решение, позволяющее заставить разделенные панели работать в openpyxl
2. @Samantha Спасибо за предложение. Я знаю о замораживании панелей, но, к сожалению, в данном случае это не очень полезно.
3. @stovfl Спасибо. Я попробовал ваше предложение, и результат «None». Не уверен, почему. Результат тот же, когда я использую файлы, которые мне нужно обработать, или когда я пробую это с совершенно новым файлом Excel.
4. @stovfl Идеально! Вот и все. С помощью XSplit выполняется только вертикальное разделение, а не ySplit. Но это детали. Большое вам спасибо за вашу помощь!
Ответ №1:
Вопрос Как разделить экран Excel с помощью Openpyxl?
Чтобы определить, показывать разделенный лист, вы должны создать openpyxl.worksheet.views.Pane
объект и назначить его myWorksheet.sheet_view.pane
.
from openpyxl.worksheet.views import Pane
wb = openpyxl.load_workbook('file.xlsx')
ws = wb.active
ws.sheet_view.pane = Pane(xSplit=20.0, ySplit=None,
topLeftCell='C1', activePane='topLeft', state='split')
wb.save('file.xlsx')
openPyXL — worksheet.views.Pane
class openpyxl.worksheet.views.Pane(xSplit=None, ySplit=None, topLeftCell=None, activePane='topLeft', state='split')[source]
activePane
Значение должно быть одним из{‘topLeft’, ‘bottomRight’, ‘topRight’, ‘bottomLeft’}
состояние
Значение должно быть одним из{‘split’, ‘frozen’, ‘frozenSplit’}
TopLeftCell
Значения должны иметь тип<class ‘str’>
XSplit
Значения должны иметь тип<class ‘float’>
ySplit
Значения должны иметь тип<class ‘float’>