DataTable数据导出成Excel文件的小例子,需要的朋友可以参考一下
复制代码 代码如下: /// /// 将DataTable中的数据导出到指定的Excel文件中 /// /// Web页面对象 /// 包含被导出数据的DataTable对象 /// Excel文件的名称 public static void Export(System.Web.UI.Page page,System.Data.DataTable tab,string FileName) { System.Web.HttpResponse httpResponse = page.Response; System.Web.UI.WebControls.DataGrid dataGrid=new System.Web.UI.WebControls.DataGrid(); dataGrid.DataSource=tab.DefaultView; dataGrid.AllowPaging = false; dataGrid.HeaderStyle.BackColor = System.Drawing.Color.Green; dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; dataGrid.HeaderStyle.Font.Bold = true; dataGrid.DataBind(); httpResponse.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)); //filename="*.xls"; httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); httpResponse.ContentType ="application/ms-excel"; System.IO.StringWriter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); dataGrid.RenderControl(hw);
string filePath = page.Server.MapPath("..")+"//Files//" +FileName; System.IO.StreamWriter sw = System.IO.File.CreateText(filePath); sw.Write(tw.ToString()); sw.Close();
DownFile(httpResponse,FileName,filePath);
httpResponse.End(); } private static bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath) { try { Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312"); System.IO.FileStream fs= System.IO.File.OpenRead(fullPath); long fLen=fs.Length; int size=102400;//每100K同时下载数据 byte[] readData = //www.jb51.net/yongle_tianya/archive/2011/10/24/new byte[size];//指定缓冲区的大小 if(size>fLen)size=Convert.ToInt32(fLen); long fPos=0; bool isEnd=false; while (!isEnd) { if((fPos+size)>fLen) { size=Convert.ToInt32(fLen-fPos); readData = //www.jb51.net/yongle_tianya/archive/2011/10/24/new byte[size]; isEnd=true; } fs.Read(readData, 0, size);//读入一个压缩块 Response.BinaryWrite(readData); fPos+=size; } fs.Close(); System.IO.File.Delete(fullPath); return true; } catch { return false; } }
|