• 原样导出Repeater控件数据(包括分页数据)


    一、背景说明

    之前导出excel一般使用DataTable作为数据库,但是DataTableRepeater绑定后,会做一些格式转换(如:dt里面为1的值 Repeater中显示 “正常”),如果在DataTable中再进行转换就比较麻烦。(好处就是可以导出分页数据)

    二、解决方法

    1、解决的问题
           a) Repeater数据原样导出

           b) 可导出Repeater中的分页数据

    2、代码

                DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

                //使用流方式导出Excel

                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

                HttpContext.Current.Response.ContentType = "application/ms-excel";

                HttpContext.Current.Response.Charset = "gb2312";

                HttpContext.Current.Response.AppendHeader("Content-Disposition""attachment;filename=" + HttpUtility.UrlEncode("门店奖品兑换.xls"System.Text.Encoding.UTF8).ToString());

                StringWriter sw = new StringWriter();

                HtmlTextWriter htw = new HtmlTextWriter(sw);

                Repeater1.RenderControl(htw);

                HttpContext.Current.Response.Write(sw.ToString());

                HttpContext.Current.Response.End();

     三 、代码说明

    1、如果要导出分页数据,那么就需要把Repeater绑定的DataTable数据存放在ViewState中,触发导出事件时使用DataTable重新绑定Repeater
    DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

    2、使用流方式导出

     四、会出现问题的解决方法

         1、导出的Excel都是Html代码

            所有的html代码应该放在Repeater内,包括<table>

         2、导出的所有数据缩到一列

            在标题列中不要通过style=10% 设置宽度 

  • 相关阅读:
    php 元字符与转义
    php内置函数
    php系统常量
    WPF 批量修改控件属性
    对实体属性值赋值(DATASET转list)
    WPF 进度条实现
    WPF 异步刷新主界面
    c# 依赖注入Export ImportMany
    Oracle 正则匹配实现字符拆分
    Oracle 获取表对应列信息和索引信息
  • 原文地址:https://www.cnblogs.com/gossip/p/1978072.html
Copyright © 2020-2023  润新知