将Table表格导出到Excel
1.导出当前页
效果如下:
前台代码:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <style> DIV.viciao { MARGIN-TOP: 20px; MARGIN-BOTTOM: 10px; } DIV.viciao A { BORDER-RIGHT: #8db5d7 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #8db5d7 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #8db5d7 1px solid; COLOR: #000; MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: #8db5d7 1px solid; TEXT-DECORATION: none; } DIV.viciao A:hover { BORDER-RIGHT: red 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: red 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: red 1px solid; MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: red 1px solid; } DIV.viciao A:active { BORDER-RIGHT: red 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: red 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: red 1px solid; MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: red 1px solid; } DIV.viciao SPAN.current { BORDER-RIGHT: #e89954 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #e89954 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: 2px; BORDER-LEFT: #e89954 1px solid; COLOR: #000; MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: #e89954 1px solid; BACKGROUND-COLOR: #ffca7d; } DIV.viciao SPAN.disabled { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; BORDER-LEFT: #ccc 1px solid; COLOR: #ccc; MARGIN-RIGHT: 2px; PADDING-TOP: 2px; BORDER-BOTTOM: #ccc 1px solid; } </style> </head> <body> <input type="button" name="excelBut" value="导出Excel" onclick="exportExcel()" class="sgbtn" /> <table id="OrderInfo"> <thead> <tr> <th>编号</th> <th>姓名</th> <th>备注</th> </tr> </thead> <tbody id="tdContent"></tbody> </table> <div id="nav" class="viciao"></div> <!--导出Excel处理隐藏域--> @using (Html.BeginForm("ExportExcel1", "Home", FormMethod.Post, new { name = "myForm" })) { @Html.Hidden("hHtml") } <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script> //分页内容开始 $(function () { pageData(1,5); }) pageData = function (pIndex, pSize) { $("#tdContent").empty(); $("#nav").children().empty(); $.getJSON(\'@Url.Action("GetList","Home")?id=\'+Math.random()+\'\', { pageIndex: pIndex,pageSize:pSize}, function (_data) { for (var i = 0; i < _data.data.length; i++) { var html = "<tr><td name=\'majorId\'>" + _data.data[i].MajorID + "</td><td>" + _data.data[i].Name + "</td><td>" + _data.data[i].Remark + "</td></tr>"; $("#tdContent").append(html); } $("<p id=\'pNav\'>" + _data.strPage + "</p>").appendTo("#nav"); $("#pNav a").click(clickShow); }) } function clickShow() { var url = this.href; var navData = url.substring(url.lastIndexOf(\'?\') + 1); var pSize = navData.split(\'&\')[0].split(\'=\')[1]; var pIndex = navData.split(\'&\')[1].split(\'=\')[1]; pageData(pIndex, pSize); return false; } //分页内容结束-------<< //导出Excel文件开始 function exportExcel() { var sHtml =htmlEncode($("#OrderInfo")[0].outerHTML);//做html编码 $("input[name=\'hHtml\']").val(sHtml); //表单提交 $("form[name=\'myForm\']").submit(); } function htmlEncode(value) { return $(\'<div/>\').text(value).html(); } //导出Excel文件结束 </script> </body> </html>
View Code
后台代码:
using Entity.Models; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Web; using System.Web.Mvc; using NPOI.HSSF.UserModel; using NPOI.HPSF; using NPOI.POIFS.FileSystem; using System.IO; using System.Text.RegularExpressions; namespace 分页练习.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } public ActionResult GetList() { int pageIndex = string.IsNullOrEmpty(Request["pageIndex"]) ? 1:int.Parse(Request["pageIndex"]); int pageSize = string.IsNullOrEmpty(Request["pageSize"]) ? 10 : int.Parse(Request["pageSize"]); DbContext db = new InfernoContext(); int recordCount=db.Set<Major>().Count(); int pageCount = Convert.ToInt32(Math.Ceiling((recordCount*1.0/pageSize))); List<Major> list=db.Set<Major>().OrderBy(c => c.MajorID).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); string strPage = PageHelper.strPage(recordCount, pageSize, pageCount, pageIndex,"../Home/Index?pageSize="+pageSize+"&pageIndex="); var sendData = new{data=list,strPage=strPage }; return Json(sendData, JsonRequestBehavior.AllowGet); } /// <summary> /// 导出Excel /// </summary> [HttpPost] public ActionResult ExportExcel1(FormCollection form) { string strHtml = form["hHtml"]; strHtml = HttpUtility.HtmlDecode(strHtml);//Html解码 byte[] b = System.Text.Encoding.UTF8.GetBytes(strHtml);//字串转byte阵列 return File(b, "application/vnd.ms-excel", "订单详情.xls");//输出档案给Client端 } } }
View Code
导出Excel动态链接库下载:http://pan.baidu.com/s/1o7ZDxwu
PS:上面是导出【当前页】的内容,如果想导出【所有的】。原理一样,添加个隐藏域就行了,然后将所有查询到的值加载到这个隐藏域里面。之后就可以按照上面的方法继续啦~
关于将Excel导入数据库可以参考博文
终结版参考博文
版权声明:本文为shuai7boy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。