2017-01-25 8 views
0

私のアプリケーションでは、CSVにエクスポートできる項目のリストがあります。このためUTF-8とMicrosoft ExcelのCSV

、次のように私はブロブを作成します。場合

var BOM = "\ufeff"; 
var blob = new Blob([csv], { 
     type: 'csv;charset=utf-8' 
}); 

をこのリスト内のデータに特殊文字が含まれていることを、エクスポートされたファイルは、MS Excelで正しく開かれていませんでした。私は多くのQ & Aフォーラムで見られるように、私は、私のコード(次のスニペットの2行目)に行を追加しました:

作品
var BOM = "\ufeff"; 
var csv = BOM + csv; 
var blob = new Blob([csv], { 
      type: 'csv;charset=utf-8' 
}); 

- その後、CSVをExcelで正しく開かれている、しかし、ときファイルを保存する - CSV形式ではなくテキスト形式で保存します。つまり、ファイルを「名前を付けて保存」し、正しく保存するにはデフォルトのタイプを変更する必要があります。

これは本当にこのようですか?私は本当に2つのオプションのどちらかを選択する必要がありますか?ファイルまたはを正しく保存してください。

答えて

1

はいこれは残念ですが、本当にこのようです。 ExcelよりCSVはデフォルトで符号化されたANSIであり、ユニコード符号化ではCSVを直接保存することはできません。 Microsoftは、Notepadを使用してエンコードを変更することを推奨します。 How to save an address book to a CSV file by using the UTF-8 encoding format so that the CSV file can be imported to Windows Mailを参照してください。またHow can I save a csv with utf-8 encoding using Excel 2013?

のみ、他の可能性はVBAを使用している参照してくださいADODB.StreamまたはScripting.FileSystemObjectを使用してCSVファイルを作成します。

ADODB.Streamを使用してユニコードをエンコードして作成する方法CSVファイルは既に複数回回答されています。例:how to Export excel to csv file with "|" delimted and utf-8 code。区切り記号 "|" 〜に "、"。これが基本的なアプローチです。区切り文字がデータの一部である場合は、テキスト区切り文字を提供するためにそれを拡張する必要があるかもしれません。

CreateTextFile MethodScripting.FileSystemObjectにすると、より簡単ですが、UnicodeはUTF-8ではなくUTF-16LEになります。

+0

ここで提案した他の可能性についてもう少し詳しく説明できますか? – user2717436

+0

OK私は理解しています。つまり、VBAに自分のコードを書く必要があります。 JavaScriptでは、エクスポートされたファイルを開く方法をユーザーに教える以外の方法はありません。 – user2717436

+0

関連:[ExcelからUTF-8としてテキストを保存する](http://stackoverflow.com/a/9093957/11683) – GSerg

関連する問題