zoukankan      html  css  js  c++  java
  • gridview 合并单元格 并原样导出数据

    使用的方式都是比较简单的,asp.net 如何进行数据的导出有好多种方法,大家可以在网上找到,

    一下提供一些合并并原样输出的一个简单的代码:

    public void ToExcel(System.Web.UI.Control ctl)
    {

    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");

    HttpContext.Current.Response.Charset = "UTF-8";

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

    HttpContext.Current.Response.ContentType = "text/HTML";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword

    ctl.Page.EnableViewState = false;

    System.IO.StringWriter tw = new System.IO.StringWriter();

    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

    ctl.RenderControl(hw);

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

    HttpContext.Current.Response.End();

    }
    这是数据导出的最简单的方法 我们直接使用组件的渲染方式 这个东西的好处就是对于我们设计好的gridview 的合并样式进行原样的输出

    同时也有一种方式就是使用类似xml 的格式进行Excel 数据的导出 这个就需要我们进行数据格式的处理了

    页面的效果如下:

    合并的代码我以前的博客已有,

    代码如下:

    public static void MergeRows(GridView gridView,int index)
    {
    for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
    {
    GridViewRow row = gridView.Rows[rowIndex];
    GridViewRow previousRow = gridView.Rows[rowIndex + 1];

    for (int i = 0; i < index; i++)
    {
    if (row.Cells[i].Text == previousRow.Cells[i].Text)
    {
    row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 :
    previousRow.Cells[i].RowSpan + 1;
    previousRow.Cells[i].Visible = false;
    }
    }
    }
    }

    index 就是你需要合并对应的那些列的数据

    导出的Excel 效果如下:

    是原样的效果,但是这种方式是由局限的,总的来说就是伪excel 文件

    这是excel 的文件

    <div>
    <table cellspacing="0" rules="all" border="1" id="GridView1" style="border-collapse:collapse;">
    <tr>
    <th scope="col">ID</th><th scope="col">depart</th><th scope="col">nanme</th><th scope="col">code</th><th scope="col">colspan</th>
    </tr><tr>
    <td>2</td><td rowspan="2">First</td><td>dalong</td><td>23</td><td>0</td>
    </tr><tr>
    <td>3</td><td>dalong</td><td>23</td><td>0</td>
    </tr><tr>
    <td>2</td><td rowspan="2">seond</td><td>dalong22</td><td>23</td><td>0</td>
    </tr><tr>
    <td>3</td><td>dalong</td><td>23</td><td>0</td>
    </tr><tr>
    <td>4</td><td>five</td><td>dalong333</td><td>23</td><td>0</td>
    </tr><tr>
    <td>5</td><td>six</td><td>dalong44</td><td>23</td><td>0</td>
    </tr>
    </table>
    </div>

    然后查看我们的html 页面:

    包括一些效果也是没有的,当然这是对于要求不高的情况下可以使用的,如果要求高了,建议还是使用一些比较好的框架吧。

    注:

    可能会在使用在一个异常的解决方法:

    public override void VerifyRenderingInServerForm(Control control)
    {
    }

    就是这个 ,具体的原因可以查看asp.net 组件的对象模型 以及原理。

  • 相关阅读:
    扯蛋的密码规则
    【转】mysql安全基线设置
    阿里云安全基线 记录如下 不定时更新
    解决Apache的错误日志巨大的问题以及关闭Apache web日志记录
    cms如何绑定二级域名
    宝塔面板定时/同步备份网站及数据库至FTP存储空间完整教程
    宝塔部署项目报Warning: require(): open_basedir restriction in effect的解决方案
    git学习笔记(一)—— git环境搭建
    vim学习笔记(一)—— vim安装方法
    Intel Edison学习笔记(二)—— 入门环境配置
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3673974.html
Copyright © 2011-2022 走看看