1

プログラムで適切な CSV ファイルを生成する際に問題が発生しました。このファイルはユーザーによってダウンロードされ、ASP.NET プロジェクトの Excel で開かれます。Excel はファイルを正しく開くように見えますが、「名前を付けて保存」するとデフォルトで Unicode テキストになります。CSV は基本的にテキスト ファイルであることは理解していますが、Excel で CSV を作成して保存し、そのまま保存しようとすると、デフォルトで保存の種類が CSV になります。したがって、ファイルと一緒に何か余分なものが保存されていると思います。HTTP ヘッダーの context-type が「text/csv」に設定されていることを確認したので、ユーザーへの応答が正しいことを確認できました。

4

3 に答える 3

2

私が働いている場所では、大量の CSV を生成していますが、これにはよく気づきました。ファイルに問題がない可能性は非常に高いです。

CSV の問題は、標準で定義されていないため、アプリごとに解釈が若干異なることです。Excel はおそらく、正確に推奨される形式ではない CSV ファイルに対してこれを行います。

おそらく、Excel は CSV が ASCII であると想定しており、ファイルに UTF BOM があるため、タブ区切りの「Unicode テキスト」の方が適していると判断されます。

于 2012-12-13T22:26:20.687 に答える
1

これはうまくいくはずです:

protected void btnDownload_Click(object sender, EventArgs e)
{
    Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
    Response.ContentType = "text/csv";
    Response.Write("1;computer;1000");
    Response.End();
}
于 2012-12-13T22:32:58.517 に答える
0

ファイルのバイナリ ダンプを調べて、ダウンロード中のファイルがローカルで見ているファイルと同一であることを確認しましたか? 使用されているさまざまな行末記号 ( など) がある可能性があります。これにより、Excel は寛大にそれを読み取って表示しますが、デフォルトでは Unicode テキストとして保存するようになります。

Linux (または cygwin) システムでは、「od -a -x」を使用すると、ファイルがどのように構成されているかがわかります。

于 2012-12-13T22:22:30.283 に答える