zoukankan      html  css  js  c++  java
  • .Net数据集导出到Excel样式细节

      本文的目的是总结一些在做Excel导出功能时需要注意的样式细节。使用环境是Asp.Net,数据集的形式是Html Table,Excel还是识别一些CSS代码的,所以我们就来总结一下。

      1.记得为Table添加样式style="border-collapse:collapse;",这样使得表格边框自动合并,是边框不至于过粗。

      2.如果为表格加细边框,不要使用style="border:solid 1px Black;",请使用style="border:solid .5pt Black;"。(使用前者的话,在Excel的边框显示效果不佳)

      3.换行的样式为<br style="mso-data-placement:same-cell;" />。(没有为<br />标记使用以上样式的话,在Excel将表现为另起一行)

      4.表格格式为文本的样式为style="mso-number-format: '\@';"

      5.在HTML中可以使用复合样式class='a b',但是Excel只是别单个样式,即class='a'或者class='b',如果使用复合样式则显示时不会载入任何样式。

      6.Excel页面设置,在文档没有出现自动换行的前提下,这个打印样式每页的行数是固定的,如A4纵向:44行,A4横向30行,A3纵向71行,A3横向47行。

      7.通过Response.Write方式导出到Excel,对文档页面进行设置,需要手动添加@page样式,设置PaperSizeIndex属性。直接贴代码好了:

                switch (Drp_PrintStyle.SelectedValue.Trim())
                {
                    case "A3纵向":
                        pageStyle = "<style><!--table @page{margin:1.0in .75in 1.0in .75in;mso-header-margin:.5in;mso-footer-margin:.5in;} --></style>";
                        PaperSizeIndex = "8";
                        break;
                    case "A3横向":
                        pageStyle = "<style><!--table @page{margin:1.0in .75in 1.0in .75in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-page-orientation:landscape;} --></style>";
                        PaperSizeIndex = "8";
                        break;
                    case "A4纵向":
                        pageStyle = "<style><!--table @page{margin:1.0in .75in 1.0in .75in;mso-header-margin:.5in;mso-footer-margin:.5in;} --></style>";
                        PaperSizeIndex = "9";
                        break;
                    case "A4横向":
                        pageStyle = "<style><!--table @page{margin:1.0in .75in 1.0in .75in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-page-orientation:landscape;} --></style>";
                        PaperSizeIndex = "9";
                        break;
                    default:
                        break;
                }
                Response.Clear();
                Response.Write("<html xmlns:x='urn:schemas-microsoft-com:office:excel'>");
                Response.Write("<head>");
                Response.Write(pageStyle);
                Response.Write("<!--[if gte mso ]><xml>");
                Response.Write("<x:ExcelWorkbook>");
                Response.Write("<x:ExcelWorksheets>");
                Response.Write("<x:ExcelWorksheet>");
                Response.Write("<x:Name>" + "Example" + "</x:Name>");
                Response.Write("<x:WorksheetOptions>");
                Response.Write("<x:Print>");
                Response.Write("<x:PaperSizeIndex>" + PaperSizeIndex + "</x:PaperSizeIndex>");
                Response.Write("<x:ValidPrinterInfo/>");
                Response.Write("</x:Print>");
                Response.Write("</x:WorksheetOptions>");
                Response.Write("</x:ExcelWorksheet>");
                Response.Write("</x:ExcelWorksheets>");
                Response.Write("</x:ExcelWorkbook>");
                Response.Write("</xml>");
                Response.Write("<![endif]--> ");
                Response.Write("</head>");
    Response.Write方式导出

      8.通过Response.Write方式导出到Excel时,如果目标是一个HTML控件(非服务器端),需要先添加runat属性,然后以下方法获取控件的InnerHTML代码。

    System.IO.StringWriter sw = new System.IO.StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    YourHtmlControl.RenderControl(htw);

       记得加上

    public override void VerifyRenderingInServerForm(Control control){}

      9.通过Response.Write方式导出到Excel时出现乱码的一种情况是页面的编码格式和导出Excel方法中的页面编码格式不一致。

    导出方法:

    page.Response.Charset = "utf-8";
    page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
    page.Response.ContentType = "application/ms-execl";

    页面导出:

    string excelText = "<meta http-equiv=\"content-type\" content=\"application/ms-excel;charset=UTF-8\" />" + LblResult.Text;

    注意:两段代码中的编码格式要相同,即要么都是‘UTF-8’,要么都是‘GB2312’。

      10.Excel中的计量单位为磅(pt),pt与px的换算请参考 字号换算对照表

      11.明明设置了垂直居中,可是导出结果中的文字却显示靠上,给单元格添加一个字体样式就可以了,如:font-family:宋体

      12.导出内容中,可以添加样式,如:<style>td{text-align:center}</style><table>... ...</table>

      补充:样式细节,可以在导出后的Excel文件中,选择左上角文件->网页预览->查看源文件,观察头文件可以学习到更多。

  • 相关阅读:
    linux下遍历目录
    C++忽略字符大小写比较
    apue.h文件找不到的解决办法
    使用Django框架
    输出程序运行的时间(精确到微秒)
    好玩的代码(1)
    在日志文件中输出当前时间
    windows下安装storm1.1.0并启动
    eclipse配置hadoop2.7.2开发环境并本地跑起来
    windows下安装并启动hadoop2.7.2
  • 原文地址:https://www.cnblogs.com/ccweb/p/2314082.html
Copyright © 2011-2022 走看看