http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Example:_Editing_Spreadsheet_Cells
を読む。
XSpreadsheetはcom.sun.star.table.XCellRangeから派生したもの。
なので、
XCellRangeの
- getCellByPosition
- getCellRangeByPosition
- 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 コメント:
コメントを投稿