8

我创建了一个项目,该项目读取不同的文件,然后使用电子表格放入不同的工作表中。我使用了 Open office calc 电子表格,因此使用以下代码打开一个空白文件:

public XSpreadsheet getSpreadsheet(int nIndex, XComponent xComp)
{
    XSpreadsheets xSheets = ((XSpreadsheetDocument)xComp).getSheets();
    XIndexAccess xSheetsIA = (XIndexAccess)xSheets;
    XSpreadsheet xSheet =(XSpreadsheet)xSheetsIA.getByIndex(nIndex).Value;

    return xSheet;         
}

我称一张要使用的表格是这样的:

XSpreadsheet newSheet = getSpreadsheet(sheetIndex, xComp);

哪里xComp是:

string filePathway = @"file:///c:/temp/blank.ods";  
PropertyValue[] propVals = new PropertyValue[0];
XComponent oCalcuDoc = oDesktop.loadComponentFromURL(filePathway, "_blank", 0, propVals);

但是我的问题是文件 blank.ods 需要设置为在应用程序运行之前已经插入电子表格所需的工作表数量。这并不理想,因为所需的纸张数量并不总是已知的。有没有办法从我的应用程序中插入工作表?

任何帮助,将不胜感激。

4

1 回答 1

7

我只是简单地看了一下 OpenOffice API,发现了这个:http ://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XSpreadsheets.html

..它声明界面XSpreadsheets

提供按名称访问电子表格以及插入、复制、删除和重新排列电子表格的方法。

它包括以下方法:

insertNewByName,根据 API 文档:

在集合中插入一个新工作表。

见:http ://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XSpreadsheets.html#insertNewByName

... 等等。

我绝不是 OpenOffice API 专家 - 我只是简要地查看了他们的 API 文档 - 希望这可以为您指明正确的方向。

实际上,文档包含一个如何在文档中添加新工作表的示例:

 /** Inserts a new empty spreadsheet with the specified name.
 @param xDocument The XSpreadsheetDocument interface of the document.
 @param aName The name of the new sheet.
 @param nIndex The insertion index.
 @return The XSpreadsheet interface of the new sheet.
 */
 public com.sun.star.sheet.XSpreadsheet insertSpreadsheet(
     com.sun.star.sheet.XSpreadsheetDocument xDocument,
     String aName, short nIndex ) {

     // Collection of sheets
     com.sun.star.sheet.XSpreadsheets xSheets = xDocument.getSheets();
     com.sun.star.sheet.XSpreadsheet xSheet = null;

     try {
         xSheets.insertNewByName(aName, nIndex);
         xSheet = xSheets.getByName( aName );
     } catch (Exception ex) {
     }

     return xSheet;
 } 

该示例可以在本页底部看到:http ://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Working_With_Spreadsheet_Documents

于 2012-08-23T11:09:02.860 回答