DataTable数据导出成Excel文件的小例子_asp.net教程-查字典教程网
DataTable数据导出成Excel文件的小例子
DataTable数据导出成Excel文件的小例子
发布时间:2016-12-29 来源:查字典编辑
摘要:复制代码代码如下://////将DataTable中的数据导出到指定的Excel文件中//////Web页面对象///包含被导出数据的Dat...

复制代码 代码如下:

///

/// 将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 = http://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 = http://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;

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新asp.net教程学习
    热门asp.net教程学习
    编程开发子分类