2011-02-08 6 views
2

C#アプリケーションからCSVファイルを作成しますが、最初のセルはExcelおよびOpenOfficeCalcに表示されますが、メモ帳やメモ帳では表示されません。ここでCSVファイルをExcelでC#:余分な文字から作成する

は私のコードです:

StreamWriter streamWriter = new StreamWriter(new FileStream(filePath, FileMode.Create), Encoding.UTF8); 
List<MyData> myData = GetMyData; 

foreach(MyData md in myData) 
{ 
    streamWriter.WriteLine(md.Date + "," + md.Data1 + "," + md.Data2 + "," + md.Data3 + "," + md.Data4); 
} 
streamWriter.Flush(); 
streamWriter.Close(); 

MyDataはここ

public struct MyData 
{ 
    public float Data1; 
    public float Data2; 
    public float Data3; 
    public float Data4; 
    public DateTime Date; 
} 

で、メモ帳、メモ帳++で結果である:

01/12/2010 00:04:00,0.08,78787.4,9.1,5 
01/12/2010 00:09:00,0.07,78787.42,9.1,5 
01/12/2010 00:14:00,0.06,78787.44,9.1,5 
01/12/2010 00:19:00,1.45,78787.58,9.1,5 
01/12/2010 00:24:00,2.13,78788.15,9.1,5 
01/12/2010 00:29:00,1.72,78788.53,9,5 
01/12/2010 00:34:00,0.89,78788.73,9,5 

やExcelとCalcの中:

01/12/2010 00:04:00 0.08 78787.4  9.1 5 
01/12/10 00:09   0.07 78787.42 9.1 5 
01/12/10 00:14   0.06 78787.44 9.1 5 
01/12/10 00:19   1.45 78787.58 9.1 5 
01/12/10 00:24   2.13 78788.15 9.1 5 
01/12/10 00:29   1.72 78788.53 9  5 
01/12/10 00:34   0.89 78788.73 9  5 

これらの3文字は、ファイルの先頭に1回だけ表示され、その後はすべてがそのままである必要があります。

私の質問は:

から来たんやどのようにそれを削除するには?

出力をStringBuilderに書き込んだり、内容を見るためにデバッグしようとしましたが、その文字はありません。

+0

トライ編集エンコード –

答えて

5

これは、UTF8エンコーディングのために、この質問で

ルックBOMです:私はそれがBOM(ユニコードヘッダ)だと思うWrite text files without Byte Order Mark (BOM)?

+0

を作成するときにEncoding.UTF8を使用しての代わりを指定しようとありがとうございました。それは完全に動作します。 – RenardNoir

2

。 StreamWriterのコンストラクタでANSIエンコーディングを指定します。それは簡単です:Encoding.Defaultに設定するだけです。

更新:new UTF8Encoding(false):あなたはUTF-8を使用し、初めに、これらの3つのバイトを取り除くために必要がある必要がある場合は 、これを使用します。この方法では、作家はUTF8にとどまりますが、BOMは書き込まれません。

+0

ありがとうございます。それも動作しますが、UTF8エンコーディングが必要です。 – RenardNoir

+0

OK、UTF8のままでBOMを省略する必要があります。私はそれを行う方法に関する情報で私の答えを更新しました。私はそれが助けて欲しい –

1

あなたはStreamWriterの

+0

ありがとうございます。それは動作しますが、私がAl Keepに言ったように、私はUTF8でエンコードする必要があります。 – RenardNoir

関連する問題