1

データテーブルの値を csv 形式でダウンロードするためのコードがあります。正しく動作しており、Csv をダウンロードできます。他のキャラクターに置き換えられます。これが私のコードです。

string myXMLfile = Server.MapPath("~/App_Data/myfilecsv.xml");
DataSet ds = new DataSet();
System.IO.FileStream fsReadXml = new System.IO.FileStream(myXMLfile,
                                                          System.IO.FileMode.Open);

try
{
    ds.ReadXml(fsReadXml);
    DataTable dt = ds.Tables[1];


    System.Text.StringBuilder sb = new StringBuilder();

    IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
                                        Select(column => column.ColumnName);
    sb.AppendLine(string.Join(",", columnNames));

    foreach (DataRow row in dt.Rows)
    {
        IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
        foreach (var item in fields)
        {
            sb.AppendFormat("\"{0}\",", item.Replace("\"", "\"\""));
        }
        sb = sb.Remove(sb.Length - 1, 1);
        sb.Append("\n");

    }

    string attachment = "attachment; filename=mycsvfile.csv";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/csv";

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

}
catch (Exception ex)
{
    umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Error, 00002, ex.ToString());
}
finally
{
    fsReadXml.Close();
}

誰でも解決策を教えてもらえますか?

4

1 に答える 1

0

あなたの問題は、エンコーディングがないためです。エンコーディング (utf-8?) を選択し、クライアントへの応答に適切な情報を追加します。

Excel が適切に読み取る UTF-8 CSV を PHP で出力するにはどうすればよいですか? をご覧ください。- いくつかの追加の応答ヘッダーと、Excel 専用の「ハック」も表示されます。

于 2013-03-25T06:56:13.233 に答える