Top > OOobbs > 95
** [[OOobbs/95]] [#of40d768]
-''サマリ'': CalcでUnicodeのテキストファイルの保存方法について
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[中村屋]]
-''投稿日'': 2006-03-16 (木) 22:26:55

*** 質問 [#gd4c586e]
初めまして。

シート上から文字列を取得して、それをUnicode形式のTxtファイルに保存したいのですが、
ヘルプには、String型はデフォルトでUnicodeだとあったので、

 Open FileName For Output As #hFile
もしくは、Variant型にしてから
 Open FileName For Binary As #hFile
で保存しても、Shit_jis形式でしか保存できません。

エクセルVBAでは、String型をByte型にしてBinatyで保存すれば、
いけるようなのですが、Calcでは無理なのでしょうか。
良い方法をご教授願えないでしょうか。
*** 回答 [#me3b2135]
-テキストファイルへ書き出す場合には,OOoBasic のランタイム関数を用いるより,OOoAPI のサービスを利用してやるとエンコード指定できます。

[[OOoBasic/Generic/textfile]] のページでテキストファイルの読み込みと書き込みについて取り上げています。これを使用するには,[[OOoBasic/Generic/file]] で取り上げているファイルへのアクセスを用いる必要があります。

 Sub Main
 Dim sUrl As String
 sUrl = ConvertToUrl("C:/Temp/text.txt")
 Dim oFileAcc As Object
 Dim oOutputStream As Object
   oFileAcc = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
   oOutputStream = CreateUnoService("com.sun.star.io.TextOutputStream")
 
 Dim vData As Variant
   vData = oFileAcc.openFileWrite(sUrl)
   oOutputStream.setOutputStream(vData)
 
   oOutputStream.setEncoding( "UTF-8" )
 
 Dim oSheet As Object
 Dim sString As String
 oSheet = ThisComponent.getSheets().getByIndex(0)
 sString = oSheet.getCellByPosition(0, 0).getString()
 oOutputStream.writeString( sString )
 
 oOutputStream.closeOutput()
 End Sub


-- [[はにゃ?]] &new{2006-03-17 (金) 08:42:49};
-回答ありがとうございます。 -- [[中村屋]] &new{2006-03-17 (金) 12:23:10};
-しかし、"UTF-8"ではなく、全文字2バイトのUnicodeで保存したいのですが、"Unicode"や"UCS-2"などを指定してもダメだったのですが、setEncodingの引数に指定することのできる文字列はどこを参照すればわかるのでしょうか? -- [[中村屋]] &new{2006-03-17 (金) 12:25:35};
-[[http://api.openoffice.org/docs/common/ref/com/sun/star/io/XTextOutputStream.html]] のページを参考にすると,[[http://www.iana.org/assignments/character-sets]] のものを使うといいようです。

-- [[はにゃ?]] &new{2006-03-17 (金) 16:35:21};


#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes