OpenOfficeCalcを使用してTAB
を区切り文字としてCSVファイルを編集しようとしています。私が何をしても、Calcは文字列に引用符( ")を追加することを主張しています。セルの内容が数値のみの場合は問題ありません。
Calcにこれをさせない方法はありますか?つまり、TABはどのパーサーにも十分ですよね?
つまり、TABはどのパーサーにも十分ですよね?
いいえ、技術的にはそうではありません! ExcelのCSV形式 についての私の回答で述べたように、 CSVファイルの共通形式とMIMEタイプ (RFC 4180)は次のように指定しています。
…各フィールドは二重引用符で囲まれている場合とされていない場合があります(ただし、Microsoft Excelなどの一部のプログラムでは、二重引用符をまったく使用していません)。フィールドが二重引用符で囲まれていない場合、二重引用符はフィールド内に表示されない場合があります。
ここまでは順調ですね。 Calcは明らかに、常に二重引用符で囲むことを選択します。
改行(CRLF)、二重引用符、およびコンマを含むフィールドは、二重引用符で囲む必要があります
…したがって、CSVを再度正しく解析するには、ここで二重引用符を使用する必要があります。
Calcはおそらく、すべてのテキストフィールドの安全対策としてこれを行っています。それどころか、Excelが行っていることはやや曖昧です。
私は フォーラムの投稿 を見つけました。これは、マクロを使用してテキスト区切り文字を無効にすることを提案しています。
Dim oDocCsv As Object
Dim CsvProperties(2) As New com.Sun.star.beans.PropertyValue
....
CsvProperties(0).Name = "FilterName"
CsvProperties(0).Value = "Text - txt - csv (StarCalc)"
CsvProperties(1).Name = "FilterOptions"
CsvProperties(1).Value = "124,0,ANSI,2"
....
oDocCsv.storeAsURL("test.csv", CsvProperties())
ここで重要なオプションは、124,0,ANSI,2
の行です。 フィルターオプションリファレンス によると、2番目の部分(つまり、0
)は、エクスポート時にテキスト区切り文字を無効にします。