2016-09-07 13 views
0

私はc#でcsvファイルを作成しようとしています。まず、テストするコードを書きました。 that postで、 "、"文字が異なる列を作成するのに使用されていますが、それは私のためには機能しません。CSVに異なる列を作成できません

私は別のトピックで検索が、すべての答えはString.Format("{0},{1}", first, second);

ような何か私のコードです:

String first = "Test name"; 
String second = "Value"; 
String newLine = String.Format("{0},{1}", first, second); 
csv.AppendLine(newLine); 
for (int i = 0; i < 3; i++) 
{ 
    first = "Test_" + i; 
    second = i.ToString(); 
    newLine = String.Format("{0},{1}", first, second); 
    csv.AppendLine(newLine); 
} 
System.IO.File.WriteAllText(path, csv.ToString()); 

この当然のラインを作成するが、列1

答えて

2

内のすべてのStringBuilderするcsvと仮定すると、 、ファイルを作成する必要があります

Test name,Value 
Test_0,0 
Test_1,1 
Test_2,2 

は、2つの列と3つの行(およびヘッダー)を持つ有効なCSVファイルです。

英語以外のロケール(小数点記号としてカンマを使用するもの)を使用し、ExcelでCSVを読み込もうとしていますか?その場合Excelは,の代わりに;をフィールド区切り文字とみなします。必要に応じてカスタム設定でデータを分割することができます(リボンの[データ]タブの[フィールドへのテキスト]または[列へのテキスト]と呼ばれていると思います)。

+0

私は英語以外のExcelを持っています。私は ';'で試してみるとうまくいきます。しかし、私のアプリケーションは、別のコンピュータ、英語と英語以外の言語で動作します。ユーザーが英語版を使用していることを確認するにはどうすればよいですか? (私はリボンが何か分かりません) –

+0

私はそれが見つかりました: 'System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator'それは良い作品です、私はそれが英語版のために動作することを願っています。ありがとうございます。 –

+0

'([cultureinfo] :: new( 'en-us'))。PowerShellのTextInfo.ListSeparator'は'、 'を返します。ただし、CSVファイルにはカルチャを添付する手段がないため、地域の設定に応じてフォーマットを変更するのは良いことではありません。私は交換フォーマットが常に同じであるべきであるという立場をとる傾向があります。あなたのケースでは、アプリケーションとExcelがそこで実行されても、各コンピュータでうまく動作するようになりましたが、それらのファイルの*相互交換*が妨げられています。 – Joey

関連する問題