public void ExportCSV() {
Test users = new Test();
DataTable dt = users.GetAll();//测试方法
try
{
StringWriter swCSV = new StringWriter();
//标题
swCSV.WriteLine("用户名,密码,注册日期");
foreach (DataRow drTemp in dt.Rows)
{
StringBuilder sbText = new StringBuilder();
sbText = AppendCSVFields(sbText, drTemp["UserName"].ToString());
sbText = AppendCSVFields(sbText, drTemp["Pwd"].ToString());
sbText = AppendCSVFields(sbText, drTemp["RegistDate"].ToString());
//去掉尾部的逗号
sbText.Remove(sbText.Length - 1, 1);
//写datatable的一行
swCSV.WriteLine(sbText.ToString());
}
//下载
DownloadFile(Response, swCSV.GetStringBuilder(), "ExportCSV.csv");
swCSV.Close();
Response.End();
}
catch (Exception ex)
{
throw ex;
}
}
private StringBuilder AppendCSVFields(StringBuilder argSource, string argFields)
{
return argSource.Append(argFields.Replace(",", " ").Trim()).Append(",");
}
public static void DownloadFile(HttpResponse argResp, StringBuilder argFileStream, string strFileName)
{
try
{
string strResHeader = "attachment; filename=" + Guid.NewGuid().ToString() + ".csv";
if (!string.IsNullOrEmpty(strFileName))
{
strResHeader = "inline; filename=" + strFileName;
}
argResp.AppendHeader("Content-Disposition", strResHeader);//attachment说明以附件下载,inline说明在线打开
argResp.ContentType = "application/ms-excel";
argResp.ContentEncoding = Encoding.GetEncoding("GB2312"); // 编码格式如果设置成Encoding.UTF8会出现乱码
argResp.Write(argFileStream);
}
catch (Exception ex)
{
throw ex;
}
}
自己从网上找的一些资料,整理了一下,测试也通过了,写一份留着以后当资料