使用c#实现csv格式文件下载
代码如下:
/// <summary>
/// 将datatable中数据通过stream流下载到客户端
/// <param name="hr">httpresponse对象</param>
/// </summary>
public void DownloadStaff(HttpResponseBase hr)
{
//生成唯一文件名
string filename = Guid.NewGuid().ToString()+DateTime.Now+".csv";
StringBuilder title = new StringBuilder();//列名
DataTable dt = getDataTable();//从数据库获取datatable数据
for (int i = 0; i < dt.Columns.Count; i++)
{
title.Append(dt.Columns[i].ColumnName + ",");
}
title.Append("\r\n");
StringBuilder content = new StringBuilder();//内容
for (int col = 0; col < dt.Rows.Count; col++)
{
for (int row = 0; row < dt.Columns.Count; row++)
{
string s = dt.Rows[col][row].ToString();
if (s.Trim() == " ")
{
s = "";
}
content.Append(s + ",");
}
content.Append("\r\n");
}
string data = title.ToString() + content.ToString();
//下载文件名,通过编码防止中午乱码
string temp = string.Format("attachment;filename={0}", HttpUtility.UrlEncode(filename,Encoding.UTF8));
hr.Charset = "utf-8";
hr.ContentEncoding = System.Text.Encoding.Default;
hr.AppendHeader("Content-disposition", temp);
hr.ContentType = "application/octet-stream";
hr.Write(data);
hr.End();
}