前台代码:

  1. <table class="tablelist" id="myTable">
        <thead>
            <tr>
                <th colspan="1" rowspan="3">进出口标志</th>
                <th colspan="3" rowspan="1">纠错项数</th>
                <th colspan="10" rowspan="1">退补税额</th>
            </tr>
            <tr>
                <th colspan="1" rowspan="2">涉及补税</th>
                <th colspan="1" rowspan="2">涉及退税</th>
                <th colspan="1" rowspan="2">无退补税</th>
                <th colspan="5" rowspan="1">补税</th>
                <th colspan="5" rowspan="1">退税</th>
            </tr>
            <tr>
                <th colspan="1" rowspan="1">关税</th>
                <th colspan="1" rowspan="1">增值税</th>
                <th colspan="1" rowspan="1">消费税</th>
                <th colspan="1" rowspan="1">反倾销税</th>
                <th colspan="1" rowspan="1">协定关税</th>
  2.  
  3.             <th colspan="1" rowspan="1">关税</th>
                <th colspan="1" rowspan="1">增值税</th>
                <th colspan="1" rowspan="1">消费税</th>
                <th colspan="1" rowspan="1">反倾销税</th>
                <th colspan="1" rowspan="1">协定关税</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td style="text-align:center;">@item.I_E_Flag</td>
                    <td>
                        @item.involSup
                    </td>
                    <td>
                        @item.involRef
                    </td>
                    <td>
                        @item.NoRefSup
                    </td>
                    <td>
                        @item.customsTariff_Sup
                    </td>
                    <td>
                        @item.addedValueTax_Sup
                    </td>
                    <td>
                        @item.ConsumptTax_Sup
                    </td>
                    <td>
                        @item.antiDumpingTax_Sup
                    </td>
                    <td>
                        @item.agreementTariff_Sup
                    </td>
                    <td>
                        @item.customsTariff_Ref
                    </td>
                    <td>
                        @item.addedValueTax_Ref
                    </td>
                    <td>
                        @item.ConsumptTax_Ref
                    </td>
                    <td>
                        @item.antiDumpingTax_Ref
                    </td>
                    <td>
                        @item.agreementTariff_Ref
                    </td>
                </tr>
            }
        </tbody>
    </table>
    <script type="text/javascript">
        $('.tablelist tbody tr:odd').addClass('odd');
        AjaxStop();
    </script>
  4.  
  5. @using (Html.BeginForm("ExportExcel", "ClassifyCorrectionRefSupTaxStatistial", new { name = "exportData", id = "exportData" }))
  6. {
  7. <li>@Html.Hidden("hHtml")</li>
  8. <li id="DownLoad"><label>&nbsp;</label><input name="btnsearch" id="btnDownload" type="submit" class="scbtn" onclick="exportExcel()" value="下载" /></li>}

JS代码:

  1. <script >
  2. function exportExcel() {
  3. var html = document.getElementById("myTable").outerHTML;
  4. var shtml = htmlEncode(html);
  5. $("#output").val(shtml);
  6.  
  7. $("input[name='hHtml']").val(shtml);
  8. //表单提交
  9. $("#exportData").submit();
  10. }
  11. function htmlEncode(value) {
  12. //create a in-memory div, set it's inner text(which jQuery automatically encodes)
  13. //then grab the encoded contents back out. The div never exists on the page.
  14. return $('<div/>').text(value).html();
  15. }
  16. </script>

后台控制器代码:

  1. /// <summary>
  2. /// 下载统计表数据
  3. /// </summary>
  4. /// <param name="form"></param>
  5. /// <returns></returns>
  6. [HttpPost]
  7. public FileResult ExportExcel(FormCollection form)
  8. {
  9. //第一种:使用FileContentResult
  10. string content = Request.Form["hHtml"];
  11. string strHtml = form["hHtml"];
  12. strHtml = HttpUtility.HtmlDecode(strHtml);//Html解码
  13. byte[] fileContents = Encoding.UTF8.GetBytes(strHtml);
  14. string filename = DateTime.Now.ToString("yyyyMMddHHmmss");
  15. return File(fileContents, "application/ms-excel", "进出口退补税额统计表" + filename + ".xls");
  16.  
  17. //第二种:使用FileStreamResult
  18. var fileStream = new MemoryStream(fileContents);
  19. return File(fileStream, "application/ms-excel", "fileStream.xls");
  20.  
  21. //第三种:使用FilePathResult
  22. //服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.
  23. var fileName = Server.MapPath("~/uploads/选题信息导入模板.xls");
  24. return File(fileName, "application/ms-excel", "fileName.xls");
  25.  
  26. }

遇到的问题及解决方案:

1、中文字符变成乱码:

导出的Excel中文字符变成乱码,网上查询到可能是编码格式的问题,通过查看网页源码发现是“UTF-8”的格式。所以我一直认为解码的默认格式就是“UTF-8”,

所以在转成byte[] 流时就一直用的默认的编码方式byte[] fileContents = Encoding.Default.GetBytes(strHtml);

转码成GB2312的byte[]方式:byte[] buffer= Encoding.GetEncoding("GB2312").GetBytes(strHtml);

或者转成字符串:string str=Encoding.GetEncoding("GB2312").GetString(buffer);

2、IE8下文件名丢失。后缀名丢失。

ie不支持中文文件名输出。将文件名变成英文就可以了。

MVC 将视图页table导出成excel的更多相关文章

  1. js中的table导出成Excel表格

    首先判断手否是IE,原因在于IE导出我用的是ActiveXObject,判断的方式很简单,只需要拿到window.navigator.userAgent即可进行判断,代码如下 function get ...

  2. C#将html table 导出成excel实例

    public void ProcessRequest (HttpContext context) { string elxStr = "<table><tbody>& ...

  3. 【ASP.NET】C# 将HTML中Table导出到Excel(TableToExcel)

    首先,说下应用场景 就是,把页面呈现的Table 导出到Excel中.其中使用的原理是 前台使用ajax调用aspx后台,传递过去参数值,导出.使用的组件是NPOI. 前台调用: <script ...

  4. MySQL要导出成excel的方法

    MySQL 要导出成 excel 文件很简单,执行类似这样的命令:   select * from 某个表 into outfile  'd:/文件名.xls';   上述命令你在服务器上执行,就导在 ...

  5. Pl/sql 如何将oracle的表数据导出成excel文件?

    oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出e ...

  6. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  7. HTML Table导出为Excel的方法

    HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type" ...

  8. php将数据库导出成excel的方法

    <?php $fname = $_FILES['MyFile']['name']; $do = copy($_FILES['MyFile']['tmp_name'],$fname); if ($ ...

  9. 将html table 转成 excel

    package com.sun.office.excel; /** * 跨行元素元数据 * */ public class CrossRangeCellMeta { public CrossRange ...

随机推荐

  1. swift SDWebImage使用

    Web image(网络图像) 该库提供了一个支持来自Web的远程图像的UIImageView类别它提供了: 添加网络图像和缓存管理到Cocoa Touch framework的UIImageView ...

  2. Postfix之mail.cf

    1.# 2. 3.vi /etc/postfix/main.cf #vi编辑postfix配置文件 4.#找到如下配置项酌情修改 5.###### 6.myhostname =  mail.yourd ...

  3. WPF Step By Step 系列-Prism框架在项目中使用

    WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...

  4. PHP startsWith and endsWith

    function startsWith($haystack, $needle) { // search backwards starting from haystack length characte ...

  5. msp430 问题及解决记录

    ----------------------------- 2015.4.28 问题:开发板串口显示的内容为乱码 解决:使用的是原先产品主板的15200的波特率设置,但看来或者是开发板不支持11520 ...

  6. dedecms 列表每隔6行输出一个空li

    {dede:list pagesize='33'} <li class="hang"><a href="[field:arcurl/]" ta ...

  7. 如何使用SnpEff 对SNP结果进行分析

    SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of ...

  8. (基础篇)PHP字符串操作

    PHP是弱类型语言,所以其它类型的数据一般可以直接应用于字符串操作函数里,而自动转换成字符串类型,进行处理,如: echo substr("1234567", 1, 3);  和 ...

  9. 数字字符与金钱RMB之间的转换

    FormatMoney()  函数,直接将一个数字字符串,转化为 万元,并且格式化小数点保留两位   如右->¥(元.角.分) sprintf("%.2f", $value) ...

  10. UVALive-4670 Dominating Patterns(AC自动机)

    题目大意:找出出现次数最多的模式串. 题目分析:AC自动机裸题. 代码如下: # include<iostream> # include<cstdio> # include&l ...