ASP便捷导出Excel
1 /// <summary> 2 /// 导出正式EXCEL 3 /// </summary> 4 /// <param name="sender">发送方</param> 5 /// <param name="e">事件参数</param> 6 protected void btn_FinaExcel_Click(Object sender, EventArgs e) 7 { 8 DataSet ds = new DataSet(); 9 ds = _reportBO.GetrpInfoToExcelByFina(DateTime.Now);//获取需要导出的数据,此数据要有头部作为excel的首行标题 10 DataGrid dg = new DataGrid(); 11 dg.DataSource = ds; 12 dg.DataBind(); 13 Export(dg, "导出表格.xls", "application/octet-stream"); 14 }
1 private void Export(System.Web.UI.WebControls.DataGrid dg, string fileName, string typeName) 2 { 3 System.Web.HttpResponse httpResponse = Page.Response; 4 httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); 5 httpResponse.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 6 httpResponse.ContentType = typeName; 7 System.IO.StringWriter tw = new System.IO.StringWriter(); 8 System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); 9 dg.RenderControl(hw); 10 string filePath = Server.MapPath("..") + fileName; 11 System.IO.StreamWriter sw = System.IO.File.CreateText(filePath); 12 sw.Write(tw.ToString()); 13 sw.Close(); 14 15 DownFile(httpResponse, fileName, filePath); 16 httpResponse.End(); 17 }
下载:
1 private bool DownFile(System.Web.HttpResponse Response, string fileName, string fullPath) 2 { 3 try 4 { 5 Response.ContentType = "application/octet-stream"; 6 7 Response.AppendHeader("Content-Disposition", "attachment;filename=" + 8 HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ";charset=GB2312"); 9 System.IO.FileStream fs = System.IO.File.OpenRead(fullPath); 10 long fLen = fs.Length; 11 int size = 102400;//每100K同时下载数据 12 byte[] readData = new byte[size];//指定缓冲区的大小 13 if (size > fLen) size = Convert.ToInt32(fLen); 14 long fPos = 0; 15 bool isEnd = false; 16 while (!isEnd) 17 { 18 if ((fPos + size) > fLen) 19 { 20 size = Convert.ToInt32(fLen - fPos + 1); 21 readData = new byte[size]; 22 isEnd = true; 23 } 24 fs.Read(readData, 0, size);//读入一个压缩块 25 Response.BinaryWrite(readData); 26 fPos += size; 27 } 28 fs.Close(); 29 System.IO.File.Delete(fullPath); 30 return true; 31 } 32 catch 33 { 34 return false; 35 } 36 }

浙公网安备 33010602011771号