GridView導出Excel實現原理與代碼
更新時間:2013年01月10日 16:21:58 作者:
使用GridView來展示數據庫表,幾乎沒對GridView的格式做什么設定,從配置文件中加載SQL,跑出數據就直接綁定到GridView,接下來介紹導出Excel的功能感興趣的朋友可以參考下
為了完成領導交代的任務,這幾天都在做數據展現,因為時間比較緊,所以也沒做太復雜,使用GridView來展示數據庫表。幾乎沒對GridView的格式做什么設定,從配置文件中加載SQL,跑出數據就直接綁定到GridView。發(fā)現了一些問題,比如GridView的自動綁定列的寬度是沒法設定的,而此時GridView的表格輸出是不帶寬度信息的,所以導致表格列比較多的時候顯示起來會擠到頁面里面很難看,由于表的列數并不是固定的,所以也沒法很簡單的用模版列的方式做,最后只好直接將表格寬度設置成一個很大的數了事。
此外做了個導出Excel的功能,主要代碼如下:
private void DumpExcel(GridView gv, string FileName)
{//帶格式導出
string style = @"<style> .text { mso-number-format:\@; } </style>";
Response.ClearContent();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
// Style is added dynamically
Response.Write(style);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
上面的行17的重載函數是必須的,否則會報“GridView要在有run=server的From體內”的錯。
此外,變量style的作用是控制GridView列的樣式,避免發(fā)生excel表中字符前導0被當成數字給截掉這樣的問題, 通過Response.Write方法將其添加到輸出流中。最后把樣式添加到ID列。這一步需要在RowDataBound事件中完成:
1protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("class", "text");
}
}
此外做了個導出Excel的功能,主要代碼如下:
復制代碼 代碼如下:
private void DumpExcel(GridView gv, string FileName)
{//帶格式導出
string style = @"<style> .text { mso-number-format:\@; } </style>";
Response.ClearContent();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
// Style is added dynamically
Response.Write(style);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
上面的行17的重載函數是必須的,否則會報“GridView要在有run=server的From體內”的錯。
此外,變量style的作用是控制GridView列的樣式,避免發(fā)生excel表中字符前導0被當成數字給截掉這樣的問題, 通過Response.Write方法將其添加到輸出流中。最后把樣式添加到ID列。這一步需要在RowDataBound事件中完成:
復制代碼 代碼如下:
1protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("class", "text");
}
}
相關文章
用ASP.NET做的個性化的郵件發(fā)送系統(tǒng)
如果要你用ASP來做一個郵件發(fā)送系統(tǒng),你一定認為這是一個比較復雜的工作。其實也的確是這樣。但當他的后繼產品ASP.NET被推出以后,他的強大功能就使的這一切就變的相對簡單了。真的這樣神奇么?我們就通過ASP.NET做一個郵件發(fā)送系統(tǒng),看看到底有什么奧秘,是不是真的簡單。2008-02-02時間輕松學會.NET Core操作ElasticSearch7的方法
這篇文章主要介紹了時間輕松學會.NET Core操作ElasticSearch7,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04.NET下為百度文本編輯器UEditor增加圖片刪除功能示例
今天下載了目前最新版1.2.5為版本看更新記錄,主要是對表格做個修改,我下載用上,我靠,上傳圖片的刪除功能給取消了,下面與大家分享下增加圖片刪除功能示例2013-05-05VisualStudio2019中為.NET Core WinForm App啟用窗體設計器
這篇文章主要介紹了VisualStudio2019中為.NET Core WinForm App啟用窗體設計器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04ASP.NET Core使用SkiaSharp實現驗證碼的示例代碼
本篇文章主要介紹了ASP.NET Core使用SkiaSharp實現驗證碼的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12