使用 Java 获取 Open Office 中的工作表数

Posted

技术标签:

【中文标题】使用 Java 获取 Open Office 中的工作表数【英文标题】:Get number of sheets in Open Office with Java 【发布时间】:2015-12-14 23:12:28 【问题描述】:

我正在使用 Java 自动创建和修改 Open Office Calc 文档。

我想知道如何获取电子表格中的工作表数。我似乎找不到任何计数、长度、大小或类似函数。

这是我的代码。提前致谢!

  public static void openDocument(String filename)

    try
               
        // Get the remote office component context
        xContext = Bootstrap.bootstrap();

        // Get the remote office service manager
        XMultiComponentFactory xMCF = xContext.getServiceManager();

        // Get the root frame (i.e. desktop) of openoffice framework.
        oDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext);

        // Desktop has 3 interfaces. The XComponentLoader interface provides ability to load components.
        XComponentLoader xCompLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class,
                oDesktop);

        PropertyValue[] loadProps = new PropertyValue[0];

        xSpreadsheetComponent = xCompLoader.loadComponentFromURL(getUpdatedPath(filename), "_blank", 0, loadProps);

        xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xSpreadsheetComponent);

        xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(XSpreadsheetDocument.class,
                xSpreadsheetComponent);

        xSpreadsheets = xSpreadsheetDocument.getSheets();
        // Need code here to get number of sheets
    
    catch (Exception e)
    
        e.printStackTrace();
    

【问题讨论】:

你试过.getCount()吗? 针对哪个控件? x电子表格?如果是的话,很遗憾没有这样的方法。 【参考方案1】:

这更多的是评论(因为我不知道 Java 的正确语法 - 也许您需要在 xSpreadsheets 上执行 .queryInterface?),但发布作为包含图像的答案。使用 Bernard Marcelly 的对象检查工具 XRay (http://bernard.marcelly.perso.sfr.fr/index2.html) 显示 XSpreadsheets 对象具有方法 .getCount()。我使用 OpenOffice Basic 测试了这个方法,它按预期工作。

【讨论】:

感谢您的回答!但是,当我在 Eclipse 中尝试此操作时,我得到“方法 getCount() 对于 XSpreadsheets 类型未定义”。 我想通过尝试按索引访问工作表并等待无效索引异常来执行循环,但这对我来说看起来很愚蠢:) 谢谢您,先生,您的回答让我以不同的方式看待问题,我找到了我想要的:)【参考方案2】:

我用这个解决了我的问题:

int numberOfSheets = xSpreadsheets.getElementNames().length;

【讨论】:

以上是关于使用 Java 获取 Open Office 中的工作表数的主要内容,如果未能解决你的问题,请参考以下文章

通过 java 从 Open Office(Tools>Options>OpenOffice>Java) 获取不同操作系统的选定 JRE 路径

Open Office - 如何获取两个不同的 NOW() 值来创建开始/停止工作时间表

使用 UI 编辑 MS Office 或 Open Office 文件的 Java API 或库

从 Open Office 文档中获取内容

如何将 Open Office(32 位)与 64 位 Java 运行时环境集成?

Open office calc 动态单元格选择