怎么可以。 OpenOffice.org电子表格中的页面是否可以通过编程方式获得?

时间:2009-04-23 10:11:15

标签: java api openoffice.org spreadsheet

如果打印出OpenOffice.org文档,我想计算生成的页数。我已经可以使用以下代码为ODT文件执行此操作:

public short getPageCount() {
        XModel model = (XModel) UnoRuntime.queryInterface(XModel.class,
                        getDocument());

        XTextViewCursorSupplier supplier = (XTextViewCursorSupplier) UnoRuntime
                        .queryInterface(XTextViewCursorSupplier.class, model
                                        .getCurrentController());

        XTextViewCursor viewCursor = supplier.getViewCursor();

        XPageCursor pageCursor = (XPageCursor) UnoRuntime.queryInterface(
                        XPageCursor.class, viewCursor);

        pageCursor.jumpToLastPage();

        return pageCursor.getPage();
}

public Object getDocument() {
        XComponentContext context = Bootstrap.bootstrap();

        XMultiComponentFactory factory = context.getServiceManager();

        Object desktop = factory.createInstanceWithContext(
                        "com.sun.star.frame.Desktop", context);

        XComponentLoader loader = (XComponentLoader) UnoRuntime.queryInterface(
                        XComponentLoader.class, desktop);

        XComponent component = loader.loadComponentFromURL("file:///path/to/file.odt",
                        "_blank", 0, new PropertyValue[0]);

        return UnoRuntime.queryInterface(XTextDocument.class,
                        component);
}

我想知道我是否可以使用ODS文件做类似的事情。也许数不了。页面中的分页符? ShowPageBreaks课程中有SpreadsheetViewSettings个属性,但没有PageBreakCountgetPageBreaks()。 :P

1 个答案:

答案 0 :(得分:0)

// get the sheet document using UnoRuntime
XSpreadsheetDocument sheetDoc = ...;
// get an object containing all sheets
XSpreadsheets sheets = sheetDoc.getSheets();
// get the sheets names
String[] sheetnames = sheets.getElementNames();

并且你有一些你可以计算或迭代的东西。

编辑:
表格本身可能没有打印页面的概念 所以我想你要么需要使用像XPrintPreview这样的东西,但我不知道如何从那里确定页面,或者看到 Printing Spreadsheet Documents并尝试使用PrintAreas和一些数学。