GridView導(dǎo)出Excel實(shí)現(xiàn)原理與代碼
更新時(shí)間:2013年01月10日 16:21:58 作者:
使用GridView來展示數(shù)據(jù)庫(kù)表,幾乎沒對(duì)GridView的格式做什么設(shè)定,從配置文件中加載SQL,跑出數(shù)據(jù)就直接綁定到GridView,接下來介紹導(dǎo)出Excel的功能感興趣的朋友可以參考下
為了完成領(lǐng)導(dǎo)交代的任務(wù),這幾天都在做數(shù)據(jù)展現(xiàn),因?yàn)闀r(shí)間比較緊,所以也沒做太復(fù)雜,使用GridView來展示數(shù)據(jù)庫(kù)表。幾乎沒對(duì)GridView的格式做什么設(shè)定,從配置文件中加載SQL,跑出數(shù)據(jù)就直接綁定到GridView。發(fā)現(xiàn)了一些問題,比如GridView的自動(dòng)綁定列的寬度是沒法設(shè)定的,而此時(shí)GridView的表格輸出是不帶寬度信息的,所以導(dǎo)致表格列比較多的時(shí)候顯示起來會(huì)擠到頁面里面很難看,由于表的列數(shù)并不是固定的,所以也沒法很簡(jiǎn)單的用模版列的方式做,最后只好直接將表格寬度設(shè)置成一個(gè)很大的數(shù)了事。
此外做了個(gè)導(dǎo)出Excel的功能,主要代碼如下:
private void DumpExcel(GridView gv, string FileName)
{//帶格式導(dǎo)出
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的重載函數(shù)是必須的,否則會(huì)報(bào)“GridView要在有run=server的From體內(nèi)”的錯(cuò)。
此外,變量style的作用是控制GridView列的樣式,避免發(fā)生excel表中字符前導(dǎo)0被當(dāng)成數(shù)字給截掉這樣的問題, 通過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");
}
}
此外做了個(gè)導(dǎo)出Excel的功能,主要代碼如下:
復(fù)制代碼 代碼如下:
private void DumpExcel(GridView gv, string FileName)
{//帶格式導(dǎo)出
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的重載函數(shù)是必須的,否則會(huì)報(bào)“GridView要在有run=server的From體內(nèi)”的錯(cuò)。
此外,變量style的作用是控制GridView列的樣式,避免發(fā)生excel表中字符前導(dǎo)0被當(dāng)成數(shù)字給截掉這樣的問題, 通過Response.Write方法將其添加到輸出流中。最后把樣式添加到ID列。這一步需要在RowDataBound事件中完成:
復(fù)制代碼 代碼如下:
1protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("class", "text");
}
}
您可能感興趣的文章:
- asp.net DataGridView導(dǎo)出到Excel的三個(gè)方法[親測(cè)]
- asp.net GridView導(dǎo)出到Excel代碼
- GridView選擇性導(dǎo)出Excel解決方案
- 通過剪貼板實(shí)現(xiàn)將DataGridView中的數(shù)據(jù)導(dǎo)出到Excel
- C#使用RenderControl將GridView控件導(dǎo)出到EXCEL的方法
- ASP.NET使用GridView導(dǎo)出Excel實(shí)現(xiàn)方法
- C#導(dǎo)出GridView數(shù)據(jù)到Excel文件類實(shí)例
- GridView導(dǎo)出Excel常見的5種文本格式
相關(guān)文章
如何在ASP.NET Core中使用HttpClientFactory
這篇文章主要介紹了如何在ASP.NET Core中使用HttpClientFactory,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
asp.net高效替換大容量字符實(shí)現(xiàn)代碼
每次替換完后,在下次替換時(shí)先排除這次替換的內(nèi)容,累加本次替換的內(nèi)容。2008-08-08
一步步打造簡(jiǎn)單的MVC電商網(wǎng)站BooksStore(1)
這篇文章主要和大家一起一步步打造一個(gè)簡(jiǎn)單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
MVC4 基礎(chǔ) 枚舉生成 DropDownList 實(shí)用技巧
本篇文章小編為大家介紹,MVC4 基礎(chǔ) 枚舉生成 DropDownList 實(shí)用技巧。需要的朋友參考下2013-04-04
開源跨平臺(tái)運(yùn)行服務(wù)插件TaskCore.MainForm
這篇文章主要為大家詳細(xì)介紹了開源跨平臺(tái)運(yùn)行服務(wù)插件TaskCore.MainForm的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
.NET6?ConfigurationManager的實(shí)現(xiàn)及使用方式
這篇文章主要介紹了.NET6?ConfigurationManager的實(shí)現(xiàn),我們上面展示的這一部分的ConfigurationManager代碼,其實(shí)就是替代了原來的ConfigurationBuilder類的功能,需要的朋友可以參考下2021-12-12

