格式化GridView并导出Excel

 

 1        /// <summary>
 2        /// 导出成为Excel
 3        /// </summary>
 4        /// <param name="exportTargetGridView">目标GridView</param>
 5        /// <param name="visibleNum">隐藏的列数</param>
 6        /// <param name="content">说明内容</param>

 7        public static void ExportExcel(GridView exportTargetGridView, int visibleNum, string content)
 8        {
 9            HttpContext.Current.Response.ClearContent();
10
11            HttpContext.Current.Response.Charset = "GB2312";
12
13            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7;
14
15            HttpContext.Current.Response.AddHeader("content-disposition""attachment; filename=MyExcelFile.xls");
16
17            HttpContext.Current.Response.ContentType = "application/excel";
18
19            StringWriter sw = new StringWriter();
20
21            HtmlTextWriter htw = new HtmlTextWriter(sw);
22
23            for (int i = 0; i < visibleNum; i++)
24            {
25                exportTargetGridView.Columns[exportTargetGridView.Columns.Count - (i + 1)].Visible = false;
26            }

27
28            exportTargetGridView.RenderControl(htw);
29
30            sw.WriteLine(content + exportTargetGridView.Rows.Count.ToString());
31
32            HttpContext.Current.Response.Write(sw.ToString());
33
34            HttpContext.Current.Response.End();
35        }

同时,还要重写
        public override void VerifyRenderingInServerForm(Control control)
        
{

        }


如果含有类似于身份证这样的数据,在导出成为Excel后将变成科学计数法的形式显示,所以可以通过以下方式进行转换,该段代码应写在RowDataBound事件中
            if (e.Row.RowType == DataControlRowType.DataRow)
            
{
                e.Row.Cells[
4].Attributes.Add("style""vnd.ms-excel.numberformat:@");
            }
KidYang
posted @ 2006-12-31 09:04 KidYang 阅读(423) 评论(4)  编辑 收藏 网摘

  回复  引用    
#1楼 2006-12-31 11:10 | bing717 [未注册用户]
不错鼓励一下。kid yang
  回复  引用  查看    
#2楼 2006-12-31 21:17 | antony.net      
不错。这样汇出,在excel里只能有65536条记录。多了就不显示的。
  回复  引用  查看    
#3楼 [楼主]2007-01-01 17:02 | Kid Yang      
多谢@bing717,我会再接再励的。

  回复  引用  查看    
#4楼 [楼主]2007-01-01 17:03 | Kid Yang      
@antony.net
一般GridView都会分页,所以不会涉及到输入65536那么多
Excel最大的记录数是65536,如果输入的记录超过65536的话,可以分多表输出




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: