将数据表导出为csv并导入到客户端,而无需保存在服务器中

本文关键字:保存 服务器 存在 客户端 数据表 csv 导入 | 更新日期: 2023-09-27 18:17:46

我想将数据导出为csv格式,然后允许用户选择打开/保存到客户端系统。但是csv文件不应该保存在服务器上。

我使用了下面的代码:

this.Response.Clear();
this.Response.ContentType = "application/octet-stream";
this.Response.AddHeader("Content-Disposition", "attachment; filename='"" + sFileName + "'"");
this.Response.TransmitFile(FilePath);
this.Response.Flush();
this.Response.End();

将数据表导出为csv并导入到客户端,而无需保存在服务器中

正如David建议的那样,只需尝试将CSV内容直接流式传输到响应:-

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment; filename=data.csv");
        Response.ContentType = "text/csv";
        Response.Write(stringContainingCSVData);
        Response.End();

在DataTable中获取数据并使用此函数。

public void ExportToCSVFile(DataTable dt, string file_name)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition",
         "attachment;filename='" + file_name + "'.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";
        StringBuilder sb = new StringBuilder();
        for (int k = 0; k < dt.Columns.Count; k++)
        {
            sb.Append(dt.Columns[k].ColumnName + ',');
        }
        sb.Append("'r'n");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int k = 0; k < dt.Columns.Count; k++)
            {
                sb.Append(dt.Rows[i][k].ToString() + ',');
            }
            sb.Append("'r'n");
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
    }