よろずやネット

最近はLibreofficeにハマっています。

フォントの指定 CharFontName

… 前回の続き …

 

'ターゲットのセルに値を入れる。
oSheet.getCellByPosition(0,0).Value = 1234

 

'ターゲットのセルに文字を入れる。
oSheet.getCellByPosition(0,0).String = "ABCD"

 

'フォントの種類は、文字列で指定する。例えば「Arial」ならば、次のようにする。
oSheet.getCellByPosition(0,0).CharFontName="Arial"

 

--ここで問題発生--
しかしである。ターゲットのセルに日本語を入れて、ウインドウズのポピュラーなフォントを指定しても、そのフォントになってくれないのだ。
oSheet.getCellByPosition(0,0).String = "日本語"
oSheet.getCellByPosition(0,0).CharFontName="MS ゴシック"

 

オープンオフィスの下記サイトに文字に関するページがあるが、抽象的な事ばかり書いてあって、上記問題解決のヒントが得られない。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/CharacterProperties.html

 

こういう時は、OOoForumしか頼るところがない。
http://www.oooforum.org/

 

早速、「CharFontName」と「Asia」をキーワードに検索してみる。ずばりではないが、関連すると思われるメソッドを発見。
--問題解決--
オープンオフィスでは同じセル内でも、Asianな言語(日本語等)と英数文字は分けて設定しなければならないということがわかった。
その場合、CharFontNameではなくCharFontNameAsianというメソッドを使わなければならないだ。
(これは、その世界の人たちにとっては、常識なのだろうか? シロウト(少なくとも私自身)には新しい発見だった)

 

先ほどのオープンオフィスの文字に関するページページには、一言もそんな事が書いていない。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/CharacterProperties.html
なんとも不親切ではないか!!

 

api.openoffice.orgを検索してみたらAsianな言語(日本語等)の文字に関するページは下記にあった。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/CharacterPropertiesAsian.html

 

Asianな言語(日本語等)の文字のフォントをを指定するには、

 

oSheet.getCellByPosition(0,0).String = "日本語"
oSheet.getCellByPosition(0,0).CharFontNameAsian="MS ゴシック"

 

が正解と思われる。

 

同一セル内に日本語と英数文字を混在させた場合、フォント設定によって、次の画像のような結果を得られる。

 


f:id:yorozuyanet:20190730115940g:plain

img_0

 

… 次回へ続く …