Как разделить экран Excel с помощью Openpyxl?

#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’>