如何将所有libreoffice calc电子表格表一起滚动。 (或其他〜类似3D的想法)

时间:2016-02-06 11:54:16

标签: scroll 3d spreadsheet libreoffice libreoffice-calc

我对我正在寻找的内容有一个简单的概念,但我不确定如何清楚地解释它,所以提前道歉!

我想要一个“3D”电子表格,目的是在正常的2D单元格中包含主条目,然后在每个单元格上方的第三维中具有(可能只是同样重要的)条目。这是多张纸已经允许的,问题是我不能一次看到所有第三维单元格。

我首先希望找到一些使用实际3D工作表的复杂方法但到目前为止没有运气。我意识到,如果我只能确保其他纸张与我的第一张纸张对齐那么这就足够了,所以我可以通过在纸张之间切换来沿着第三维“滚动”。

那么,有没有办法将所有纸张一起滚动?这样,如果我在纸张1上向下滚动以查看单元格123 A,当我切换到纸张2时,单元格123 A在屏幕上处于相同位置,对于纸张3和更高页面依此类推。

如果这是不可能的,但任何人都有不同解决方案的建议(即使使用不同的程序(在Linux上)),这将是很棒的。

非常感谢!

1 个答案:

答案 0 :(得分:2)

以下是OpenOffice Basic中的完整工作解决方案:

Global OldSheet As Object
Global HandlingActivationEvent As Boolean

Sub RegisterMyActivationEventListener
    oListener = CreateUnoListener( _
        "ActivListener_", "com.sun.star.sheet.XActivationEventListener" )
    oController = ThisComponent.CurrentController
    oController.addActivationEventListener(oListener)
    OldSheet = oController.ActiveSheet
    HandlingActivationEvent = False
    MsgBox "Now Listening"
End Sub

Sub ActivListener_activeSpreadsheetChanged( oEvent )
    If HandlingActivationEvent Then
        Exit Sub
    End If
    HandlingActivationEvent = True
    oController = ThisComponent.CurrentController
    newSheet = oController.ActiveSheet
    oController.setActiveSheet(OldSheet)

    col = oController.getFirstVisibleColumn()
    row = oController.getFirstVisibleRow()
    oController.setActiveSheet(newSheet)
    oController.setFirstVisibleColumn(col)
    oController.setFirstVisibleRow(row)

    'MsgBox col & ", " & row
    OldSheet = newSheet
    HandlingActivationEvent = False
End Sub

要使其有效,请转到Tools -> Customize。在“事件”标签中,将RegisterMyActivationEventListener分配给Open Document事件。

代码说明

不是同时滚动纸张,而是只要激活不同的纸张,它就会滚动到相应的单元格。它使用XViewPane界面查看上一页滚动的位置,并将下一页滚动到同一位置。

要了解工作表何时激活,代码会使用an event listener作为XActivationEventListener界面。