C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: OpenOfficeをVB.NETで操作


(過去ログ 110 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■65221 / inTopicNo.1)  OpenOfficeをVB.NETで操作
  
□投稿者/ しめじ (1回)-(2013/02/14(Thu) 10:32:27)

分類:[VB.NET/VB2005 以降] 

UNOを使って、VB.NETからOpenOfficeを操作しているのですが、あるセル内の文字列のフォントを部分的に変えたり太字にしたりしたいです。
とりあえずググってみると、
http://openoffice3.web.fc2.com/OOoBasic_Calc.html
とか
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2Ftext
とか、情報は出てきます。

大まかに
 ・セルのオブジェクトを取得
 ・セルのオブジェクトからカーソル的なオブジェクトを取得
 ・文字列の範囲を設定
 ・フォント等を設定
みたいな流れは分かったのですが、いざコピペしてみると、getCellByPositionが返すオブジェクト(XCellクラス?)に
 ・Stringというメンバがない
 ・createTextCursorというメンバがない
などで、コンパイルできません。

もちょい調べると、
http://atkonn.blogspot.jp/2008/12/workopenofficesdkjavaspreadsheet_43.html
を見つけまして、このページの情報によると、

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

とのことでした。確かに、setValueは引数にdoubleしか受け付けないようなので、こっちの情報を参考にしたいのですが、このコードはJavaのようです。

> com.sun.star.text.XText xCellText =
> (com.sun.star.text.XText)UnoRuntime.queryInterface(com.sun.star.text.XText.class, xCell);

の一文が重要っぽいのですが、これはVB.NETで書くとどうなるのでしょうか?
引用返信 編集キー/
■65223 / inTopicNo.2)  Re[1]: OpenOfficeをVB.NETで操作
□投稿者/ Hongliang (36回)-(2013/02/14(Thu) 12:00:22)
// 試してませんが
DirectCastでキャストしてやれば良いんじゃないですかね。
引用返信 編集キー/
■65235 / inTopicNo.3)  Re[2]: OpenOfficeをVB.NETで操作
□投稿者/ しめじ (2回)-(2013/02/14(Thu) 17:01:18)
なんか、OOoBasicとVB.NETを混同してるっぽいな、自分...

Hongliang さん:
ありがとうございます!
確かにキャストすると、それらしいオブジェクトが取得できました。
まだ、セル内の文字列のフォントを部分的に変更するまでには至ってないですが。
引用返信 編集キー/
■65237 / inTopicNo.4)  Re[3]: OpenOfficeをVB.NETで操作
□投稿者/ しめじ (3回)-(2013/02/14(Thu) 17:10:28)
セル全体のフォント等を変更するには、以下のようにすればOKでした。
だけど、やりたいのは、セル内の文字列を *部分的に* 変更することなんですよねぇ...

' セルのフォントを変更する
Public Sub SetFont(ByVal sheetName As String, ByVal cellRange As String, ByVal fontName As String)
    Dim sheet As XSpreadsheet = Me.GetSheet(sheetName)
    Dim range = sheet.getCellRangeByName(cellRange)
    Dim xProps As XPropertySet = DirectCast(range, XPropertySet)
    xProps.setPropertyValue("CharFontName", New uno.Any(fontName))
    xProps.setPropertyValue("CharFontNameAsian", New uno.Any(fontName))
End Sub

' セルを太字にする
Public Sub SetBold(ByVal sheetName As String, ByVal cellRange As String)
    Dim sheet As XSpreadsheet = Me.GetSheet(sheetName)
    Dim range = sheet.getCellRangeByName(cellRange)
    Dim xProps As XPropertySet = DirectCast(range, XPropertySet)
    xProps.setPropertyValue("CharWeight", New uno.Any(FontWeight.BOLD))
    xProps.setPropertyValue("CharWeightAsian", New uno.Any(FontWeight.BOLD))
End Sub

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -