限制 OpenOffice Calc 中的行数和列数

限制 OpenOffice Calc 中的行数和列数

有没有办法限制 OpenOffice Calc 中工作表显示的行数和列数?

我已经采取手动隐藏我想要的区域之外的行和列的方法,但这很繁琐,并且在使用自动筛选时会被重置。

请注意,我正在寻找每个工作表的设置,而不是每个用户或每个安装的设置。

在 Excel 中,似乎有一种非常迂回的方法可以做到这一点,但我还没有找到 OpenOffice 等效的方法:http://spreadsheets.about.com/od/excelformulas/ss/2011-05-14-excel-2010-limit-rows-tutorial.htm

答案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

但是我认为添加这样的处理程序会让用户非常恼火。他们会尝试单击某个单元格,但什么也没有发生,或者视图可能会突然滚动回原始视图。

相关内容