国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

GridView導(dǎo)出Excel實(shí)現(xiàn)原理與代碼

2024-07-10 12:41:06
字體:
供稿:網(wǎng)友
為了完成領(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ì)擠到頁(yè)面里面很難看,由于表的列數(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");
}
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 华安县| 南靖县| 云浮市| 乌苏市| 子洲县| 鞍山市| 胶州市| 晋州市| 左云县| 滨州市| 西华县| 海淀区| 龙南县| 阳西县| 永寿县| 全椒县| 理塘县| 清原| 千阳县| 大新县| 辛集市| 天峻县| 探索| 左权县| 防城港市| 济阳县| 沿河| 清新县| 丹江口市| 中卫市| 舒城县| 连平县| 安义县| 泗阳县| 沂源县| 镶黄旗| 平湖市| 许昌市| 乌兰浩特市| 兴义市| 龙陵县|