将Repeater控件导入Excel表(正则清除a标签保留文本,img标签清除)

导入的表:<table width="100%" cellpadding="0" style="border-color: #89C2D6; margin-top: 5px;
              <colgroup>
                <col width="16%">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
                <col width="100">
            </colgroup>
            <tr class="HeaderStyle">
                <th rowspan="3" style=" background-image: none;">
                </th>
                <th colspan="2">
                    星期一</th>
                <th colspan="2">
                    星期二</th>
                <th colspan="2">
                    星期三</th>
                <th colspan="2">
                    星期四</th>
                <th colspan="2">
                    星期五</th>
                <th colspan="2">
                    星期六</th>
                <th colspan="2">
                    星期日</th>
            </tr>
            <tr class="ItemStyle" id="trDay" runat="server">
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
                <th colspan="2">
                </th>
            </tr>
            <tr class="ItemStyle">
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
                <th>
                    上午</th>
                <th>
                    下午</th>
            </tr>
            <asp:Repeater ID="Repeater1" runat="server">
            </asp:Repeater>
        </table>//个人认为要我导出这张表的设计者有点怪咖

后台点击事件代码:

   --------部分代码来自百度

    Bind();------Repeater1的数据源,特别提醒下,少了导出的就是张空表

Response.Clear();
        Response.Charset = "GB2312";
        Response.Buffer = true;
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("kiss.xls", System.Text.Encoding.UTF8).ToString());
        Response.ContentType = "application/ms-excel";//,application/octet-stream
        this.EnableViewState = true;
        System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
        System.IO.StringWriter sw = new System.IO.StringWriter(myCItrad);
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        //ClearControls(Repeater1);------用来清除表中所用的控件(button),此表木有
        this.Repeater1.RenderControl(hw);
        string str = hw.InnerWriter.ToString();

=============下面是要画出要倒到Excel表====================================
        Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=gb2312\">");
        Response.Write("<title>无标题页</title>");
        Response.Write("<style type=‘text/css‘>");
        Response.Write(".pass{color: Red;}");
        Response.Write(".awiting {color: #ff9900;}");
        Response.Write(".nopass {color: #8e236b;}");
        Response.Write("a{text-decoration:none;cursor:default;}");
        Response.Write("</style>");
        Response.Write("<script src=‘../common/js/jquery-1.2.3.min.js‘ type=‘text/javascript‘></script>");
        Response.Write("<body>");
        Response.Write("<table width=‘100%‘ cellpadding=‘0‘ style=‘border-color: black; margin-top: 5px;background-color: white‘ id=‘table1‘ class=‘CSSDataGrid‘ cellspacing=‘1‘ border=‘1‘>");
        Response.Write("<tr>");
        Response.Write("<td colspan=‘15‘ align=‘right‘ border=‘0‘ style=‘border-color:White;‘> 图例:<font class=‘awiting‘>未审核申请</font>&nbsp;<font class=‘nopass‘>审核未通过申请</font>&nbsp;<font class=‘pass‘>审核通过申请</font>&nbsp;新增申请&nbsp;&nbsp;会议室被锁定</td>");
        Response.Write("</tr>");
        Response.Write("<colgroup>");
        Response.Write("<col width=‘150‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("<col width=‘130‘>");
        Response.Write("</colgroup>");
        Response.Write("<tr>");
        Response.Write("<th rowspan=‘3‘ style=‘background-color: White; background-image: none;‘></th>");
        Response.Write("<th colspan=‘2‘>星期一</th>");
        Response.Write("<th colspan=‘2‘>星期二</th>");
        Response.Write("<th colspan=‘2‘>星期三</th>");
        Response.Write("<th colspan=‘2‘>星期四</th>");
        Response.Write("<th colspan=‘2‘>星期五</th>");
        Response.Write("<th colspan=‘2‘>星期六</th>");
        Response.Write("<th colspan=‘2‘>星期日</th>");
        Response.Write("</tr>");
        int dayIndex = (int)this._cur.DayOfWeek - 1;
        if (dayIndex == -1) dayIndex = 6;
        _st = _cur.Date.AddDays((-1) * dayIndex).Date;
        _et = _st.AddDays(6).AddHours(23);
        Response.Write("<tr class=‘ItemStyle‘ id=‘trDay‘");
        for (int i = 0; i < 7; i++)
        {
            Response.Write("<th colspan=‘2‘>" + _st.AddDays(i).ToString("MM月dd日") + "</th>");
        }
        Response.Write("</tr>");
        Response.Write("<tr>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("<th>上午</th>");
        Response.Write("<th>下午</th>");
        Response.Write("</tr>");

=====对数据源做出相应的条件处理======
        string all = sw.ToString();
        Regex r = new Regex("<img.[^>]+[>]+", RegexOptions.ExplicitCapture);//通过正则去除数据源中‘ img ‘标签
        string result1 = r.Replace(all, "");
        Regex rr = new Regex(@"<a[^>]*>|</a>$");//通过正则去除数据源‘ a ‘标签并保留‘ a ‘标签的文本值
        string result = rr.Replace(result1, "");
        Response.Write(result);
        Response.Write("</table>");
        Response.Write("<script type=‘text/javascript‘ language=‘javascript‘>");
        Response.Write("$(function{");
        Response.Write("$(‘a‘).removeAttr(‘href‘);");
        Response.Write("});");
        Response.Write("</script>");
        Response.Write("</body></html>");
        Response.Flush();
        Response.End();

测试导入的表图片如下:(截图只截取部分)

    

时间: 2024-08-22 09:32:51

将Repeater控件导入Excel表(正则清除a标签保留文本,img标签清除)的相关文章

c# Datagridview控件导入/导出excel表格

在写商业软件的时候,我们会经常遇到对excel表格的操控,最常见的就是Datagridview控件导入/导出excel表格.我也同样遇到了.运用了自己的知识,再加上网上的[大部分]都过期的源码,自己写出了这两个方法,当然,和绑定数据库一样,都用到了databel类. 导入: //private string fileName; /// <summary> /// 将DataGridView中数据导入到Excel /// </summary> /// <param name=&

webform(三)Repeater控件

Repeater 控件用于显示重复的项目列表,这些项目被限制在该控件.Repeater 控件可被绑定到数据库表.XML 文件或者其他项目列表. 一.建实体类和数据访问类 建立的方法和winform一样,建立时会提示类文件应该放在App_Code文件里,是否放入,选择是,会自动创建该文件夹并将类放进去. webform没有命名空间. 实体类: public class Users { public int Ids { get; set; } public string Ucode { get; s

使用Aspose.Cell控件实现Excel高难度报表的生成(三)

在之前几篇文章中,介绍了关于Apsose.cell这个强大的Excel操作控件的使用,相关文章如下: 使用Aspose.Cell控件实现Excel高难度报表的生成(一) 使用Aspose.Cell控件实现Excel高难度报表的生成(二) 使用Aspose.Cell控件实现多个Excel文件的合并 这几篇文章,都对Apose.Cell这个控件生成各种Excel的方式进行了阐述,对直接把DataTable或者IList生成Excel的操作,对通过模板方式实现自定义报表的各种方式,以及多个文件的合并的

Repeater控件 ---表格展示数据

简介: Repeater控件是Web 服务器控件中的一个容器控件,它使您可以从页的任何可用数据中创建出自定义列表. Repeater 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repeater 控件提供布局.当该页运行时, Repeater 控件依次通过数据源中的记录为每个记录呈现一个项. Repeater控件不具备内置的呈现功能,所以我们得用一些模板来实现他的数据呈现 下表描述了 Repeater 控件支持的模板.  模板属性                           

Repeater控件-2

本文转自:http://www.cnblogs.com/foolin/archive/2011/08/31/2161342.html 文章最后更新于2011年9月2日,增加Demo代码. 一般开发绑定数据的时候,Repeater控件是非常好用的控件,但是很多.net开发人员苦恼于无法分页,于是开发一个基于Repeater的分页控件,现在拿出来和大家一起分享分享.写得不好大家可以尽管拍砖,源码在本文后面.其实这个分页控件非常简单,分页控件只是根据记录数和当前页数等设置而输出一个分页导航条而已,并没

repeater控件实现分页

repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果. 分页分为真分页和假分页. 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都需要访问数据库. 假分页:从数据库一次性取出所有数据绑定到控件上,再将所有数据根据一页显示多少条而分页. 从以上二者的概念上我们可以看出,区别在于分页时从数据库读取信息的方式,真分页的效率无疑是最高的.假分页在首次页面加载的时候会比较慢(如果数据量较多). 二者其实各有各的优缺点,可根据需要来自行选

WebForm(四)——Repeater控件(重要、好用)

Repeater控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.             Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式. 一.Repeater控件显示数据 要使用Repeater控件显示数据,必须创建ItemTemplate.如下所示: 例1:使用ItemTemplate显示数据 <asp:Repeater ID="Repeater1" runat="server" DataSou

repeater控件自定义Url分页带参数

repeater控件的效果图如下: 该页面实现的功能如下: 1.上下分页,(也可以带首页和末页,我只是禁掉了没用) 2.根据用户输入的指定分页索引进行跳转 3.根据筛选数据的参数进行URL分页的参数传递 4.数据的导出功能 前台代码: <!--表格具体内容--> <div class="table-box"> <table> <thead> <tr> <th>编号</th> <th>姓名&l

vb.net datagridview控件导出excel

导出数据的时候,经常需要将软件中的表格导出为excel,学习vb的时候用到了这个功能,当时用的是面向过程的编程方法,哪里需要了,就在哪个窗体写一遍代码.这次,我们使用面向对象的思维再次实现这个功能.对比一下,两个方法有什么区别. 这里使用vb.net作为载体,和面向过程一样,第一步还是要添加引用.为了增加复用性,需要把这个功能做成一个模块,因为是导出数据,所以,把它放到U层,需要在U层添加引用.如图: 将图中画红框的选中就可以了. 然后在U层添加模块,模块代码如下: Imports Micros