• Html标签输出到前台并导出到Excel


          本篇文章介绍一个简单的从后台拼html标签到前台显示并能导出到Excel的例子。

    例如,我们在后台拼接一个课程表,要输出到前台,样子如下:

    image_thumb2

    后台部分代码:

    StringBuilder html = new StringBuilder();
            html.Append("<table cellpadding=\"0\" cellspacing=\"0\" style=\"border:1px solid black;text-align:center;\" width=\"700\">\n");
            html.Append("<tr>\n<td style=\"border-bottom: 1px solid black;text-align:center;\" colspan=\"6\">XXXX年XX月课程表</td>\n</tr>\n");
            /*********************************************/
            html.Append("<tr>\n");
            for (int i = 0; i <= 5; i++)
            {
                if (i == 5)
                {
                    html.Append("<td style=\"border-bottom: 1px solid black;text-align: center;\">" + (string.IsNullOrEmpty(toCNNum(i)) ? "&nbsp;" : toCNNum(i)) + "</td>\n");
                }
                else
                {
                    html.Append("<td style=\"border-bottom: 1px solid black;text-align:center;border-right: 1px solid black;\">" + (string.IsNullOrEmpty(toCNNum(i)) ? "&nbsp;" : toCNNum(i)) + "</td>\n");
                }
            }
            html.Append("</tr>\n");
            /*********************************************/
            html.Append("<tr>\n");
    

          说白了就是在后台动态的拼接标签,最后输出到前台做显示。

          这里我们可以看到样式固定的写到标签的内部了,这样做最后其实只需要输出table标签就可以了,但是需要加样式的地方就需要加在标签内部。

          当然我们可以把样式写成一个style提取出来,在标签中加入class=”style”就行了,这样做没有问题,输出到前台也可以正常显示,但是在导出到excel时会遇到问题,导出的excel没有样式,因为我们在后台输出时只是拼接了table标签没有把样式带上,样式可以写在前台的head标签里,或者独立到css文件中,但是在导出的excel中并不带这些样式。所以,在后台拼接标签时,我们需要带上完整的样式增加一些必要的标签,再导出到excel时就没有问题了。

          以上两种方法可以根据实际应用来定。

          下面我们看一下excel导出的关键代码:

    //输出的应用类型
            Response.ContentType = "application/vnd.ms-excel";
            //设定编码方式,若输出的excel有乱码,可优先从编码方面解决
            // Response.Charset = "gb2312";
            Response.Charset = "utf-8";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            //关闭ViewState,此属性在Page中
            EnableViewState = false;
            //filenames是自定义的文件名
            Response.AppendHeader("Content-Disposition", "attachment;filename=data.xls");
            //content是步骤1的html,注意是string类型
            Response.Write(createTable());
           Response.End();
    

    注释已经写得很清晰了,导出到excel的样子:

    clip_image002_thumb2

    下面是完整示例下载:

    点我下载

  • 相关阅读:
    VS操作Sqlite数据库
    Sqlite官方下载对应版本注意细节
    样式
    移动端问题
    table最终版IE(浏览器中宽度不起作用)
    pointer-event:none;在IE浏览器中不起作用
    伪类的使用
    针对谷歌浏览器写的css样式
    IE浏览器中textarea有滚动条出现
    父级元素被子元素的margin-top值影响的解决方案
  • 原文地址:https://www.cnblogs.com/Johnny_Z/p/2748252.html
Copyright © 2020-2023  润新知