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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将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();

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

    技术分享

以上是关于将Repeater控件导入Excel表(正则清除a标签保留文本,img标签清除)的主要内容,如果未能解决你的问题,请参考以下文章

实现Repeater控件的记录单选

如何使用 C# 将多个 Excel 工作表导入 SQL 表?

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

怎样合并Repeater控件同一列中内容相同的单元格

DELPHI中导入Excel时,存在格式问题,怎么解决?

如何将EXCEL数据导入到SQL SERVER数据库中