熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET導出數據到Excel的實現方法

2013-11-13 10:36:46  來源: .NET編程 
在做aspnet程序時涉及到數據顯示的時候多數會要求打印而網頁上的打印格式往往又不能滿足需求經常用的方法就是導入到Excel以後再進行打印(仿佛這已經是老生常談)今天在網上搜了一段打印的代碼覺得不錯需要打印的朋友可以看看  

  網上好些代碼的原理大致與此類似同樣都存在一個問題就是
類型“GridView”的控件 “ctl_center_GridView”必須放在具有 runat=server 的窗體標記內 說明: 執行當前 Web 請求期間出現未處理的異常請檢查堆棧跟蹤信息以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息 異常詳細信息:SystemWebHttpException: 類型“GridView”的控件“ctl_center_GridView”必須放在具有 runat=server 的窗體標記內
這段錯誤描述是我在注釋了這段程序是報的錯

復制代碼 代碼如下:
//publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)
//{
//  //baseVerifyRenderingInServerForm(control);
//}

  
雖然這個方法裡的內容也被注釋了也就是說這是個空方法但是如果沒有個方法程序就會報上面那個錯誤最初見到這段錯誤說明是想到了以前做ajax程 序時報的一個錯誤很是類似同樣是因為沒有重寫VerifyRenderingInServerForm方法所致在此提醒使用的朋友注意下面貼出導出 到Excel的代碼

復制代碼 代碼如下:

  
usingSystem;
usingSystemData;
usingSystemConfiguration;
usingSystemCollections;
usingSystemWeb;
usingSystemWebSecurity;
usingSystemWebUI;
usingSystemWebUIWebControls;
usingSystemWebUIWebControlsWebParts;
usingSystemWebUIHtmlControls;
usingSystemIO;
///<summary>
///ToExcleHelper的摘要說明
///</summary>
publicclassExportHelper
{
publicstaticvoidExportToExcel(IListdataListstring[]fieldsstring[]headTextsstringtitle)
{
GridViewgvw=newGridView();
intColCounti;
//如果篩選的字段和對應的列頭名稱個數相對的情況下只導出指定的字段
if(fieldsLength!=&&fieldsLength==headTextsLength)
{
ColCount=fieldsLength;
gvwAutoGenerateColumns=false;
for(i=;i<ColCount;i++)
{
BoundFieldbf=newBoundField();
bfDataField=fields[i];
bfHeaderText=headTexts[i];
gvwColumnsAdd(bf);
}
}
else
{
gvwAutoGenerateColumns=true;
}
SetStype(gvw);
gvwDataSource=dataList;
gvwDataBind();
ExportToExcel(gvwtitle);
}
///<summary>
///導出數據到Excel
///</summary>
///<paramname="DataList">IListData</param>
///<paramname="Fields">要導出的字段</param>
///<paramname="HeadName">字段對應顯示的名稱</param>
publicstaticvoidExportToExcel(IListdataListstring[]fieldsstring[]headTexts)
{
ExportToExcel(dataListfieldsheadTextsstringEmpty);
}
///<summary>
///設置樣式
///</summary>
///<paramname="gvw"></param>
privatestaticvoidSetStype(GridViewgvw)
{
gvwFontName="Verdana";
gvwBorderStyle=SystemWebUIWebControlsBorderStyleSolid;
gvwHeaderStyleBackColor=SystemDrawingColorLightCyan;
gvwHeaderStyleForeColor=SystemDrawingColorBlack;
gvwHeaderStyleHorizontalAlign=SystemWebUIWebControlsHorizontalAlignCenter;
gvwHeaderStyleWrap=false;
gvwHeaderStyleFontBold=true;
gvwHeaderStyleFontSize=;
gvwRowStyleFontSize=;
}
///<summary>
///導出GridView中的數據到Excel
///</summary>
///<paramname="gvw"></param>
///<paramname="DataList"></param>
publicstaticvoidExportToExcel(GridViewgvwstringtitle)
{
stringfileName;
HttpContextCurrentResponseBuffer=true;
HttpContextCurrentResponseClearContent();
HttpContextCurrentResponseClearHeaders();
fileName=stringFormat("xhmd{:yyMMddHHmm}xls"DateTimeNow);
HttpContextCurrentResponseAppendHeader("ContentDisposition""attachment;filename="+fileName);
HttpContextCurrentResponseContentType="application/vndmsexcel";
StringWritertw=newSystemIOStringWriter();
HtmlTextWriterhw=newSystemWebUIHtmlTextWriter(tw);
gvwRenderControl(hw);
if(!stringIsNullOrEmpty(title))
{
HttpContextCurrentResponseWrite("<b><center><fontsize=face=Verdanacolor=#FF>"+title+"</font></center></b>");
}
HttpContextCurrentResponseWrite(twToString());
HttpContextCurrentResponseFlush();
HttpContextCurrentResponseClose();
HttpContextCurrentResponseEnd();
gvwDispose();
twDispose();
hwDispose();
gvw=null;
tw=null;
hw=null;
}
publicstaticvoidDataTableExcel(SystemDataDataTabledtData)
{
SystemWebUIWebControlsDataGriddgExport=null;
//當前對話
SystemWebHttpContextcurContext=SystemWebHttpContextCurrent;
//IO用於導出並返回excel文件
SystemIOStringWriterstrWriter=null;
SystemWebUIHtmlTextWriterhtmlWriter=null;
if(dtData!=null)
{
//設置編碼和附件格式
curContextResponseContentType="application/vndmsexcel";
curContextResponseContentEncoding=SystemTextEncodingUTF;
curContextResponseCharset="";

//導出excel文件
strWriter=newSystemIOStringWriter();
htmlWriter=newSystemWebUIHtmlTextWriter(strWriter);
//為了解決dgData中可能進行了分頁的情況需要重新定義一個無分頁的DataGrid
dgExport=newSystemWebUIWebControlsDataGrid();
dgExportDataSource=dtDataDefaultView;
dgExportAllowPaging=false;
dgExportDataBind();
//返回客戶端
dgExportRenderControl(htmlWriter);  
curContextResponseWrite(strWriterToString());
curContextResponseEnd();
}
}
}


From:http://tw.wingwit.com/Article/program/net/201311/14126.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.