前台代码:

<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>             <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> @using (Html.BeginForm("ExportExcel", "ClassifyCorrectionRefSupTaxStatistial", new { name = "exportData", id = "exportData" }))
{
<li>@Html.Hidden("hHtml")</li>
<li id="DownLoad"><label>&nbsp;</label><input name="btnsearch" id="btnDownload" type="submit" class="scbtn" onclick="exportExcel()" value="下载" /></li>}

JS代码:

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

后台控制器代码:

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

遇到的问题及解决方案:

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. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...

  2. 关于我和Github不得不说的一些小事

    你好,我叫黄雅婷,学号是1413042031,网络工程142班.因为小时候家里有很多课外书,有关神话和科学方面的杂志和书籍等,所以从小就喜欢看书,现在比较不挑,什么书都喜欢看,就是给我本字典,我也能看 ...

  3. 【转】使用Xcode 6将你的项目本地化

    原文转自:http://www.cocoachina.com/ios/20141004/9827.html iOS和OSX支持40种语言的本地化,Xcode无疑为这一过程提供了强有力的支持.苹果将这一 ...

  4. [SYSU]每周一赛

    2014年每周一赛第一场 A.Cutting Sausages                                        B.Rectangular Fields //待做    ...

  5. WP8.1 双击两次返回键退出程序

    在实现Windows Phone上实现点按两次返回键退出程序, 一种方法是使用Coding4Fun提供的ToastPrompt, 使用方法如下: 1. 安装引用, 打开Package Manager ...

  6. beta 阶段的 postmortem 报告

    part一: 用户数:目前约30人 总结:与当初的预算差不多,首先1.第一次开发软件,经验效率不足,那是很正常的事情.2.用户数量少,因为宣传力度还是比较的少.应该加强软件的推广才行. part二: ...

  7. 《JS高程》基本类型和引用类型的值学习笔记

    ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 创建方式类似:创建一个变量并为其赋值. (1)基本类型值和引用类型值比较 基本类型值 引用类型值 简单的数据段 可能由 ...

  8. dedecms 列表页调用自定义字段

    在列表附加字段中添加自己定义的字段 如: lwulr调用:{dede:list addfields="lwurl" channelid="1"}[field:l ...

  9. CentOS下Web服务器环境搭建LNMP一键安装包

    CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...

  10. List-ApI及详解

    1.API : add(Object o) remove(Object o) clear() indexOf(Object o) get(int i) size() iterator() isEmpt ...