服务器之家

服务器之家 > 正文

DataTable数据导出成Excel文件的小例子

时间:2019-11-04 12:37     来源/作者:asp.net教程网

代码如下:


/// 
/// 将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.zzvips.com/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.zzvips.com/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; 

 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
返回顶部