Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过编程方式获取OpenOffice.org电子表格中的页数?_Java_Api_Openoffice.org_Spreadsheet - Fatal编程技术网

Java 如何通过编程方式获取OpenOffice.org电子表格中的页数?

Java 如何通过编程方式获取OpenOffice.org电子表格中的页数?,java,api,openoffice.org,spreadsheet,Java,Api,Openoffice.org,Spreadsheet,我想计算一下,如果我打印出OpenOffice.org文档,将会产生多少页面。我已经可以使用以下代码对ODT文件执行此操作: public short getPageCount() { XModel model = (XModel) UnoRuntime.queryInterface(XModel.class, getDocument()); XTextViewCursorSupplier supplier = (

我想计算一下,如果我打印出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文件做类似的事情。也许数一数纸上的分页符数?SpreadsheetViewSettings类中有ShowPageBreaks属性,但没有PageBreakCount或getPageBreaks属性:P

这里有一些可以计算或迭代的东西

编辑: 纸张本身可能没有打印页面的概念。 所以我想你要么需要使用像XPrintPreview这样的东西,但我不知道如何从那里确定页面,要么
尝试使用打印区域和一些数学。

抱歉,我只是意识到我没有明确表示我想要打印电子表格时产生的页数。看起来,纸张的数量可能并不总是与打印出来的页数相同。
// 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();