利用第三方组件生成excel,并下载。

本篇文章内容就是介绍将数据保存到生成的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();
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章