web-dev-qa-db-ja.com

CSVファイルに保存すると、OpenOfficeに常に引用符が追加されます

OpenOfficeCalcを使用してTABを区切り文字としてCSVファイルを編集しようとしています。私が何をしても、Calcは文字列に引用符( ")を追加することを主張しています。セルの内容が数値のみの場合は問題ありません。

Calcにこれをさせない方法はありますか?つまり、TABはどのパーサーにも十分ですよね?

5
lang2

なぜ二重引用符が必要なのですか?

つまり、TABはどのパーサーにも十分ですよね?

いいえ、技術的にはそうではありません! ExcelのCSV形式 についての私の回答で述べたように、 CSVファイルの共通形式とMIMEタイプ (RFC 4180)は次のように指定しています。

…各フィールドは二重引用符で囲まれている場合とされていない場合があります(ただし、Microsoft Excelなどの一部のプログラムでは、二重引用符をまったく使用していません)。フィールドが二重引用符で囲まれていない場合、二重引用符はフィールド内に表示されない場合があります。

ここまでは順調ですね。 Calcは明らかに、常に二重引用符で囲むことを選択します。

改行(CRLF)、二重引用符、およびコンマを含むフィールドは、二重引用符で囲む必要があります

…したがって、CSVを再度正しく解析するには、ここで二重引用符を使用する必要があります

なぜCalcはそれらを追加するのですか?

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)は、エクスポート時にテキスト区切り文字を無効にします。

1
slhck

TSVファイル(二重引用符付き)をメモ帳++で開きます

  1. """に置き換えます
  2. \t"\tに置き換えます
  3. "\t\tに置き換えます

notepad ++置換ダイアログ

そして、あなたは完了です..。

0
Triven