MVC 将视图页table导出成excel
前台代码:
<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> </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的更多相关文章
- js中的table导出成Excel表格
首先判断手否是IE,原因在于IE导出我用的是ActiveXObject,判断的方式很简单,只需要拿到window.navigator.userAgent即可进行判断,代码如下 function get ...
- C#将html table 导出成excel实例
public void ProcessRequest (HttpContext context) { string elxStr = "<table><tbody>& ...
- 【ASP.NET】C# 将HTML中Table导出到Excel(TableToExcel)
首先,说下应用场景 就是,把页面呈现的Table 导出到Excel中.其中使用的原理是 前台使用ajax调用aspx后台,传递过去参数值,导出.使用的组件是NPOI. 前台调用: <script ...
- MySQL要导出成excel的方法
MySQL 要导出成 excel 文件很简单,执行类似这样的命令: select * from 某个表 into outfile 'd:/文件名.xls'; 上述命令你在服务器上执行,就导在 ...
- Pl/sql 如何将oracle的表数据导出成excel文件?
oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出e ...
- 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; ...
- HTML Table导出为Excel的方法
HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type" ...
- php将数据库导出成excel的方法
<?php $fname = $_FILES['MyFile']['name']; $do = copy($_FILES['MyFile']['tmp_name'],$fname); if ($ ...
- 将html table 转成 excel
package com.sun.office.excel; /** * 跨行元素元数据 * */ public class CrossRangeCellMeta { public CrossRange ...
随机推荐
- 想调试,装了个Zend Server
本来apache+mysql+php+zend studio+ svn + ftp +ssh跑的挺好,总想跑个断点调个程序能爽些,白瞎这么强的GUI集成开发环境,只能System.out.printl ...
- 关于python3 OpenCV的安装和配置
开发环境,win7 32bit, Anaconda3.之前尝试pip安装,但是总是不成功.后来,交流群里面废帝大神让我用conda安装,之后按照conda install --channel http ...
- The Cow Lineup_找规律
Description Farmer John's N cows (1 <= N <= 100,000) are lined up in a row.Each cow is labeled ...
- wdatepicker minDate&maxDate
示例4-3-2 前面的日期+3天 不能大于 后面的日期 日期从 到 <input type="text" class="Wdate" id ...
- Unity3D ShaderLab 基础的高光实现
Unity3D ShaderLab 基础的高光实现 关于高光: 在一个物体表面的高光属性就是为了描述它是如何表现光泽.这种类型的效果在着色器的世界中通常称为视点相关效果. 之所以这样说,是因为为了实现 ...
- M1: 创建UWP空项目
本小节介绍如何在Visual Studio中创建一个UWP项目,Visual Studio中提供了快速创建各种项目的类型模板.在Visual Studio 2015中,同样提供了UWP项目模板. 学完 ...
- Eclipse Pydev 技巧汇编
之前一直使用eclipse中默认的console.但是这个console并不是interactive的,如果数据比较小的时候还行,数据量一旦很大,则每次调试都需要重新再跑一遍程序,从而浪费很多时间. ...
- Easy Problem-map和vector的使用
给出一个包含n个整数的数组,你需要回答若干询问.每次询问包含两个整数k和v,输出从左到右第k个v的下标(数组下标,从左右到右编号1~n). [输入格式] 输入包含多组数据.每组数据第一行为两个整数n和 ...
- php 滑动验证码
自己研究: jQuery拖拽滑动验证码插件 slideunlock.js 原理:(别人说) 响应时间,拖拽速度,时间,位置,轨迹,重试次数等.这些因素能够构成一个采样结果或者辨识特性. 只获取到滑动时 ...
- 最短路径--SPFA 算法
适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了. 我们约定有向加权图G不存在负权回路,即最短路径一 ...