メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年12月30日火曜日

[work][OpenOffice][SDK][java]Spreadsheet Documents読み中(6) Working with Spreadsheet Documents

http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Working_With_Spreadsheet_Documents
を読む。

Spreadsheet Document
スプレッドシートドキュメントはcom.sun.star.sheet.SpreadsheetDocumentで表現される。

SpreadsheetDocumentは少なくとも1つの要素を持つSpreadsheetオブジェクトのコレクションからなる。
com.sun.star.sheet.XSpreadsheetDocumentのgetSheets()メソッドを呼べば、
com.sun.star.sheet.XSpreadsheetsを取得できる。

getSheets()メソッドでXSpreadsheetsを取得すれば、3つの異なる方法でシートにアクセスすることを可能にする。

  1. インデックスによる方法
  2. Enumによる方法
  3. 名前による方法

の3つ。


インデックスによる方法
com.sun.star.container.XIndexAccessというインタフェースが提供されているので、
このインタフェースを使用し、シートにアクセスする。

public com.sun.star.sheet.XSpreadsheet getSpreadsheet(
com.sun.star.sheet.XSpreadsheetDocument xDocument, int nIndex) {

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

try {
com.sun.star.container.XIndexAccess xSheetsIA = (com.sun.star.container.XIndexAccess)
UnoRuntime.queryInterface(com.sun.star.container.XIndexAccess.class, xSheets);
xSheet = (com.sun.star.sheet.XSpreadsheet) xSheetsIA.getByIndex(nIndex);
} catch (Exception ex) {
}

return xSheet;
}
 


Enumによる方法
com.sun.star.sheet.SpreadsheetsEnumerationというサービスが提供されているので、
このサービスを使用してシートにアクセスする。

名前による方法
com.sun.star.container.XNameContainerを派生してcom.sun.star.sheet.XSpreadsheetsが提供されているので、XNameContainerのメソッドを使用して、名前による指定でシートにアクセスする。

public com.sun.star.sheet.XSpreadsheet getSpreadsheet(
com.sun.star.sheet.XSpreadsheetDocument xDocument,
String aName) {

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

try {
com.sun.star.container.XNameAccess xSheetsNA = (com.sun.star.container.XNameAccess)
UnoRuntime.queryInterface(com.sun.star.container.XNameAccess.class, xSheets);
xSheet = (com.sun.star.sheet.XSpreadsheet) xSheetsNA.getByName(aName);
} catch (Exception ex) {
}

return xSheet;
}
 



さらに、XSpreadsheetには以下のようなメソッドも存在する。
  1. insertNewByName() - 新しい空のシートを指定した名前で指定した位置に追加する。
  2. moveByName() - シートを指定した名前で指定した位置に移動する。
  3. copyByName() - コピーする。




.

0 コメント: