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 に答える