最近做出版发行系统用到这块.
所以张罗了一个简单解决方案。
说它简单,是因为未对Excel做什么处理。
所以张罗了一个简单解决方案。
说它简单,是因为未对Excel做什么处理。
public void datasetToExcel1(string fileName)
{
DataSet ds = (DataSet)this.Cache["DataSet"];
DataTable dt=ds.Tables[0];
System.IO.StringWriter sw=new System.IO.StringWriter();
sw.WriteLine("姓名\t公司\t投递地址\t邮编\t份数\t手机\t电话");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["pSubscriberName"]+"\t"+dr["pSubscriberCompany"]+"\t"+dr["pSubscriberAddress"]+"\t"+dr["pSubscriberPost"]+"\t"+dr["pMagazineShareNum"]+"\t"+dr["pSubscriberPhone"]+"\t"+dr["pSubscriberTel"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+".xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}
这里要注意的是fileName 必须进行转换,不然下载的文件名是乱码。
{
DataSet ds = (DataSet)this.Cache["DataSet"];
DataTable dt=ds.Tables[0];
System.IO.StringWriter sw=new System.IO.StringWriter();
sw.WriteLine("姓名\t公司\t投递地址\t邮编\t份数\t手机\t电话");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["pSubscriberName"]+"\t"+dr["pSubscriberCompany"]+"\t"+dr["pSubscriberAddress"]+"\t"+dr["pSubscriberPost"]+"\t"+dr["pMagazineShareNum"]+"\t"+dr["pSubscriberPhone"]+"\t"+dr["pSubscriberTel"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+".xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}