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

2008年12月30日火曜日

[work][OpenOffice][SDK][java]Spreadsheet Documents読み中(3) セルをいじってみる

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


XSpreadsheetはcom.sun.star.table.XCellRangeから派生したもの。
なので、
XCellRangeの

  1. getCellByPosition
  2. getCellRangeByPosition
  3. getCellRangeByName
というメソッドを使うことができる。

getCellByPosition
指定された範囲中の1つのcellを返す。

getCellRangeByPosition
指定された範囲中のcellのサブレンジなるものを返す。

getCellRangeByName
指定された範囲中のcellのサブレンジなるものを返す。


だもんで、XSpreadsheet.getCellByPosition(0,0)とやるとExcelで言うところのA1のCellを返す。

getCellByPosition()で返されたCellに対して値をセットしてやると、そのCellの値を書き換えることができる。らしい。


try {
/* シートコレクションにinsert */
xSheets.insertNewByName("うんこ", (short)0);
/* シートコレクションから追加したシートを取り出してみる */
xsheet = (XSpreadsheet)xSheets.getByName("うんこ");
xsheet.getCellByPosition(0,0).setValue(1234);
} catch (Exception ex) {
ex.printStackTrace();
}



さっきのsheet追加のコードにgetCellByPosition().setValue()を加えてみた。
setValueは数値しか渡せない。

文字列をセットしたければ、xsheet.getCellByPosition()で返されるXCellオブジェクトから
queryして、com.sun.star.text.XTextを取り出す必要がある。

コードで書くと、

com.sun.star.table.XCell xCell = xsheet.getCellByPosition(0,0);
com.sun.star.text.XText xCellText = (com.sun.star.text.XText)
UnoRuntime.queryInterface(com.sun.star.text.XText.class, xCell);
com.sun.star.text.XTextCursor xTextCursor = xCellText.createTextCursor();
xCellText.insertString(xTextCursor, "テキストだよー", false);

 

こんな感じ。

.

0 コメント: