2015-12-14 40 views
2

我正在使用Java來自動創建和修改Open Office Calc文檔。使用Java獲取Open Office中的頁數

我想知道如何獲取電子表格中的工作表數量。我似乎無法找到任何計數,長度,大小或類似的功能。

這是我的代碼。提前致謝!

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(); 
    } 
+0

您是否嘗試過'.getCount()'? – Lyrl

+0

對於哪個控件? xSpreadSheets?如果是的話,不幸的是沒有這樣的方法。 –

回答

1

我解決了使用這個我的問題:

int numberOfSheets = xSpreadsheets.getElementNames().length; 
+0

謝謝安迪! ;) –

1

這更多的是一種意見的(因爲我不知道Java的語法是否正確? - 也許你需要做一個xSpreadsheets .queryInterface),但作爲張貼的答案,包括圖像。使用Bernard Marcelly的對象檢測工具XRay(http://bernard.marcelly.perso.sfr.fr/index2.html)顯示XSpreadsheets對象具有.getCount()方法。我使用OpenOffice Basic測試了此方法,並且按預期工作。

Xray window of XSpreadsheets object

+1

謝謝你的回答!然而,當我在Eclipse中嘗試這個時,我得到「方法getCount()未定義爲類型XSpreadsheets」。 –

+0

我雖然做了一個循環試圖通過索引訪問表,並等待無效索引異常,但對我來說這看起來很愚蠢:) –

+1

謝謝先生,你的回答讓我看到了不同的問題,我發現了什麼我正在尋找:) –