Python 如何通过pyuno提取LibreOffice calc中当前选定的单元格范围?

Python 如何通过pyuno提取LibreOffice calc中当前选定的单元格范围?,python,openoffice-calc,libreoffice-calc,pyuno,Python,Openoffice Calc,Libreoffice Calc,Pyuno,在LibreOffice/OpenOffice calc python宏中使用pyuno时,我只希望能够选择一系列单元格,并在运行宏时,将所有单元格数据(例如,作为可在python脚本中检索的某个iterable对象)作为可操作对象。我几乎找不到任何关于这方面的文档,希望能有一些示例代码来演示如何做到这一点。在经历了一段非常痛苦的尝试和错误之后,感谢在任何地方都没有关于pyuno用法的文档和示例-如果我忽略了什么,请纠正我,我最终得到了以下代码,它似乎完成了我所追求的目标: import uno

在LibreOffice/OpenOffice calc python宏中使用pyuno时,我只希望能够选择一系列单元格,并在运行宏时,将所有单元格数据(例如,作为可在python脚本中检索的某个iterable对象)作为可操作对象。我几乎找不到任何关于这方面的文档,希望能有一些示例代码来演示如何做到这一点。

在经历了一段非常痛苦的尝试和错误之后,感谢在任何地方都没有关于pyuno用法的文档和示例-如果我忽略了什么,请纠正我,我最终得到了以下代码,它似乎完成了我所追求的目标:

import uno
doc = XSCRIPTCONTEXT.getDocument()

def mymodule():
    ctrlr = doc.CurrentController
    sel = ctrlr.getSelection()
    x = sel.getDataArray()
    # now the data is available as nested tuples in x, so do something with it
    file('/tmp/out', 'w').write(repr(x))
这可以放入python文件中,并至少与Ubuntu 14.04一起存储在~/.config/libreoffice/4/user/Scripts/python目录中,然后只要安装了libreoffice脚本提供程序python包,就可以通过工具->宏->运行宏菜单选项从libreoffice Calc中运行它。也可以使用“工具->自定义->键盘”对话框将其绑定到键盘快捷键


有关允许将LibreOffice Calc中的数据加载到倍频程以进行进一步分析的更完整示例,请参见。

,或者您可以尝试类似的方法,我认为这更容易理解

    desktop = XSCRIPTCONTEXT.getDesktop()
    model = desktop.getCurrentComponent()
    try:
        sheets = model.getSheets()
    except AttributeError:
        raise Exception("This script is for Calc Spreadsheets only")
    #sheet = sheets.getByName('Sheet1')
    sheet = model.CurrentController.getActiveSheet()
    oSelection = model.getCurrentSelection()
    oArea = oSelection.getRangeAddress()
    first_row = oArea.StartRow
    last_row = oArea.EndRow
    first_col = oArea.StartColumn
    last_col = oArea.EndColumn