本篇文章内容就是介绍将数据保存到生成的excel表中,并进行下载。本人才疏学浅,所用方法可能不是好的方法,愿读者参考时加以思考,并给予建议!
某些时候需要将数据库中的数据或者网页上的数据保存下来,方便查看或者在没有联网情况下可以查看,而将数据保存到excel表中无疑使比较的选择。
生成excel表格方法有很多种,由DataSet生成(CSV、XML)、由GridView生成(Html的Table),调用Excel生成和使用第三方组件生成等等,前两种生成的excel文件只是excel格式,而不是标准的excel,后两种生成的就是标准的excel。而如果直接调用Excel生成,会有一些局限性。若是C/S模式的程序,就没什么问题,因为程序是在客户端跑的。若是B/S模式的程序,那服务器端必须安装office。再者如果并发量很多,服务器端不好控制这些进程,容易造成服务器死机。所以很有必要使用第三方组件来生成,这样子的好处就是可以不用安装office软件也可直接生成excel文件。
首先必须下载GemBox.Spreadsheet.dll并添加引用。
直接上代码
static string path = System.Web.HttpContext.Current.Server.MapPath("~/Temp");//将生成的文件放在Temp的文件夹
public void CreateExcel()//生成excel
{
ExcelFile ef = new ExcelFile();
ExcelWorksheet ew = ef.Worksheets.Add("newSheet");
ew.Cells[0, 4].Value = "添加内容";//在表格[0,4]位置添加内容
if (!Directory.Exists(path)) //如果文件夹不存在则创建
{
Directory.CreateDirectory(path);
}
ef.SaveXls(path +"\\" + "文件名" + ".xls");
ef.LoadXls(path+ "\\" + "文件名" + ".xls", XlsOptions.None);
DowmLoad(“文件名” + ".xls");
}
public void DowmLoad(string name)
{
FileInfo fileInfo = new FileInfo(path + "/" + name);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(name));//解决ie下载时中文乱码问题
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}