将数据表导出为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();
正如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();
}