本篇文章內容就是介紹將數據保存到生成的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();
}