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: #;
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: #;
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(,);
})
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 = ; 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('?') + );
var pSize = navData.split('&')[].split('=')[];
var pIndex = navData.split('&')[].split('=')[];
pageData(pIndex, pSize);
return false;
}
//分页内容结束-------<< //导出Excel文件开始
function exportExcel() {
var sHtml =htmlEncode($("#OrderInfo")[].outerHTML);//做html编码
$("input[name='hHtml']").val(sHtml); //表单提交
$("form[name='myForm']").submit();
} function htmlEncode(value) {
return $('<div/>').text(value).html();
}
//导出Excel文件结束
</script>
</body>
</html>

后台代码:

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"]) ? :int.Parse(Request["pageIndex"]);
int pageSize = string.IsNullOrEmpty(Request["pageSize"]) ? : 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 - ) * 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端
} }
}

导出Excel动态链接库下载:http://pan.baidu.com/s/1o7ZDxwu

PS:上面是导出【当前页】的内容,如果想导出【所有的】。原理一样,添加个隐藏域就行了,然后将所有查询到的值加载到这个隐藏域里面。之后就可以按照上面的方法继续啦~

关于将Excel导入数据库可以参考博文

终结版参考博文

将Table表格导出到Excel的更多相关文章

  1. 纯JS 将table表格导出到excel

    html <div > <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv ...

  2. vue+iview中的table表格导出excel表格

    一.iveiw框架中table中有exportCsv()方法可以导出.csv后缀文件,类似于excel文件,但是并不是excel文件. 二.实现table表格导出excel文件利用Blob.js 和 ...

  3. 将HTML表格导出到EXCEL,兼容Firefox,支持中文

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 使用JavaScript把页面上的表格导出为Excel文件

    如果在页面上展示了一个数据表格,而用户想把这个表格导出为Excel文件,那么在要求不高的情况下,可以不通过服务器生成表格,而是直接利用JavaScript的Blob和Object URL特性将表格导出 ...

  5. 网站开发进阶(二十五)js如何将html表格导出为excel文件

    js如何将html表格导出为excel文件        赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉! jsp页面数据导出成excel的方法很 ...

  6. vue将表格导出为excel

    vue将表格导出为excel 一:在项目中需要安装2个依赖项,如下命令: npm install --save file-saver xlsx 二:在vue文件中如下使用即可: <templat ...

  7. JS 将页面上的表格导出为 Excel 文件

    如果在页面上展示了一个表格,想把这个表格导出为Excel文件,那么在要求不高的情况下,可以直接利用 JavaScript 的 Blob 和 Object URL 特性将表格导出.不过,这就是利用了 E ...

  8. 使用NPOI将TABLE内容导出到EXCEL

    项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...

  9. 网站开发进阶(三十一)js如何将html表格导出为excel文件(后记)

    js如何将html表格导出为excel文件(后记) 前言 项目前期做了个导出Excel表格的功能,但是经过测试发现只有在IE上才可以正确实现,在Chrome等浏览器中无法实现导出效果.经过上网搜索,尝 ...

随机推荐

  1. Makefile变量

    自定义变量 = 是最基本的赋值,会把整个makefile展开之后再决定是多少 x=foo y=$(x)bar #y是asdbar,不是foobar x=asd := 是覆盖之前的值,和=不同,和赋值的 ...

  2. shell执行mysql命令

    难点主要在参数的传递方式吧,不过查资料后发现很简单. 1.使用-e参数传递命令,适用于简单语句      mysql -uuser -ppasswd -e "create database ...

  3. C++杂谈(三)产生随机数与time函数

    产生随机数在程序中很有用,这篇文章简单介绍一下产生随机数的方法. 伪随机数 使用标准库<cstdlib>中的rand()函数产生随机数. #include<iostream> ...

  4. win7 telnet

    一.telnet连接 1.linux linux下可以通过net stat 查看22端口来确认端口是否开放. 然后在cmd中可通过telnet 10.0.200.151 22来连接. 2.win7 w ...

  5. [转]TCP协议中的三次握手和四次挥手(图解)

    本文转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来 ...

  6. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  7. POJ 1066 Treasure Hunt【线段相交】

    思路:枚举四边墙的门的中点,与终点连成一条线段,判断与其相交的线段的个数.最小的加一即为答案. 我是傻逼,一个数组越界调了两个小时. #include<stdio.h> #include& ...

  8. MySQL sql语言的笔记

    3 MySQL数据库 3.1 mysql数据存储结构 先数据库,再表,再有数据 4 数据库管理 4.1 查询所有数据库 mysql> show databases; +------------- ...

  9. 基于JSch的Sftp工具类

    本Sftp工具类的API如下所示. 1)构造方法摘要 Sftp(String host, int port, int timeout, String username, String password ...

  10. NOI2018准备Day7

    昨天没写,就不补了. 晚上追剧到3点,今天困死...... 上午做了一道水题,然后找一个程序的神奇的错误花了3个小时 下午做了3道递归吧,稍微难一点儿的黄金题就卡了 刚开始学递归时没多做题练练,现在 ...