1

Есть ли способ ограничить количество строк и столбцов, показанных на листе в OpenOffice Calc?

Я прибегал к ручному сокрытию строк и столбцов за пределами нужной мне области, но это утомительно и сбрасывается при использовании автофильтра.

Обратите внимание, что я ищу настройки для каждого листа, а не для пользователя или установки.

В Excel, кажется, есть очень обходной способ сделать это, но я не смог найти эквивалент OpenOffice: http://spreadsheets.about.com/od/excelformulas/ss/2011-05-14- первенствует-2010-лимит-строка-tutorial.htm

1 ответ1

1

Мне кажется, что из всех возможных обходных путей лучше всего скрывать строки и столбцы. Вот подпрограмма, которая сделает это автоматически:

Sub HideRowsAndColumns(iLastVisibleRow As Integer, iLastVisibleCol As Integer)
    oController = ThisComponent.CurrentController
    oSheet = oController.ActiveSheet
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    oCellRange = oSheet.getCellRangeByPosition(_
        0, iLastVisibleRow, 0, oSheet.Rows.Count - 1)
    oController.select(oCellRange)
    dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
    oCellRange = oSheet.getCellRangeByPosition(_
        iLastVisibleCol, 0, oSheet.Columns.Count - 1, 0)
    oController.select(oCellRange)
    dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())
    oCellRange = oSheet.getCellRangeByPosition(0, 0, 0, 0)
    oController.select(oCellrange)
End Sub

Например, следующая процедура может быть вызвана при открытии документа (Tools -> Customize -> Events):

Sub DoHideRowsAndCols
    HideRowsAndColumns(20,10)
End Sub

В LibreOffice AutoFilter не отображал строки. Однако это было сделано в Apache OpenOffice. Таким образом, для AOO процедура должна быть вызвана снова после выполнения AutoFilter .

Другой альтернативой является то, что вместо того, чтобы скрывать ячейки, защищайте их, чтобы предотвратить редактирование. См. Https://ask.libreoffice.org/en/question/17106/is-it-possible-to-impose-a-limit-columns-and-rows-on-spreadsheet-size/.

Может быть возможно добавить обработчик событий, чтобы предотвратить прокрутку за пределы определенных строк. Пример обработчика событий электронной таблицы см. По адресу https://stackoverflow.com/questions/35240690/how-to-scroll-all-libreoffice-calc-spreadsheet-sheets-together-or-other-3d-li/35244220# 35244220.

Однако я думаю, что добавление такого обработчика было бы очень раздражающим для пользователя. Они будут пытаться щелкнуть по ячейке только для того, чтобы ничего не произошло, или, возможно, представление внезапно вернется к исходному виду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .