0

私は基本的にボタン クリック イベント ハンドラーに次のコードを入れました。ほとんどの場合は機能しますが、ページのすべての html も CSV ファイルに書き出します。これを止める方法はありますか?

                    StringBuilder sb = new StringBuilder();
                sb.AppendLine("pkey,epsn,Cal. Date (UTC),Va Mult, Vb Mult, Vc Mult,Ia Mult, Ib Mult, Ic Mult, Ia Phase, Ib Phase, Ic Phase, CT Rating, CT Type, Cal By");
                Response.ContentType = "application/csv";

                Response.AddHeader("content-disposition", "attachment; filename=EPSn.csv");
                Response.Write(sb.ToString());
                foreach (DataRow row in dt.Rows)
                {
                    sb = new StringBuilder((string)row[0]);
                    for (int i = 1; i < dt.Columns.Count; i++)
                    {
                        if (row[i] is DBNull)
                            sb.Append(",NULL");
                        else if (i == 2)
                            sb.Append("," + new DateTime((long)row[i]).ToString("G"));
                        else
                            sb.Append("," + row[i].ToString());

                    }
                    sb.AppendLine();
                    Response.Write(sb.ToString());
4

4 に答える 4

2

応答を書き始める前に追加します。

Response.Clear();

コードの最後に次を追加します。

Response.Flush();
Response.End();

応答を終了する最善の方法について、次の質問を称賛します。

HttpResponse.End 対 HttpResponse.Close 対 HttpResponse.SuppressContent

于 2012-06-26T21:06:04.483 に答える
1

このコードの後に​​ Response.End() も必要だと思います。これ以上の応答が応答ストリームに追加されないようにします。ページ出力を CSV に追加している可能性があります。

sb.AppendLine();
Response.Write(sb.ToString());

Response.End();
于 2012-06-26T21:03:20.927 に答える
0

あなたがExcelを避けようとしているかどうかはわかりませんが、このスニペットは私のコードで機能します:

    void InitAttachment()
    {
        string attachment = "attachment; filename= " + this.FileName;
        Response.ClearContent();
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/excel";
    }
于 2012-06-26T20:57:30.647 に答える
0

これを止める方法はありますか?

応答をクリアできます。

Response.Clear();
Response.ClearContent();

また、独自の CSV パーサーを展開するのもやめてください。本当に恐ろしいことです。人々がこの過ちを何度も繰り返しているのを見ています。

于 2012-06-26T20:51:53.350 に答える