首先在View视图中有一表单form,导出按钮<input class="btn export" type="button" value="导出" />,在js写入点击导出按钮的代码,如下:

$(".export").click(function () {
window.location.href = "/Statis/ExportExecel?data=" + $("form").serialize();
}

控制器下导出功能代码:

 public FileResult ExportExecel(SearchInfo info)
{ //获取list数据
var data = GetSearchList(info).ToList(); //创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//添加一个sheet
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //貌似这里可以设置各种样式字体颜色背景等,但是不是很方便,这里就不设置了 //给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow();
row1.CreateCell().SetCellValue("文印名称");
row1.CreateCell().SetCellValue("份数");
row1.CreateCell().SetCellValue("页数");
row1.CreateCell().SetCellValue("单双面");
row1.CreateCell().SetCellValue("打印色彩");
row1.CreateCell().SetCellValue("纸张大小");
row1.CreateCell().SetCellValue("印刷类型");
row1.CreateCell().SetCellValue("申请时间");
row1.CreateCell().SetCellValue("申请人"); //....N行 //将数据逐步写入sheet1各个行
for (int i = ; i < data.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
rowtemp.CreateCell().SetCellValue(data[i].printname.ToString());
rowtemp.CreateCell().SetCellValue(data[i].copynumber.ToString());
rowtemp.CreateCell().SetCellValue(data[i].pagernumber.ToString());
rowtemp.CreateCell().SetCellValue(data[i].printmode.ToString());
rowtemp.CreateCell().SetCellValue(data[i].printcolor.ToString());
rowtemp.CreateCell().SetCellValue(data[i].printpagersize.ToString());
rowtemp.CreateCell().SetCellValue(data[i].printingtype.ToString());
rowtemp.CreateCell().SetCellValue(data[i].addtime.ToString());
rowtemp.CreateCell().SetCellValue(data[i].User.realname.ToString()); //....N行
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(, SeekOrigin.Begin);
DateTime dt = DateTime.Now;
string dateTime = dt.ToString("yyyyMMddHHmmssfff");
string fileName = "查询结果" + dateTime + ".xls";
return File(ms, "application/vnd.ms-excel", fileName);
}
public IQueryable<userprint> GetSearchList(SearchInfo info)
{
var stat = from p in db.userprints
select p;
if (info.parentdepname != null)
{
stat = stat.Where(s => s.User.parentdepname ==info.parentdepname);
}
if (info.depname != null)
{
stat = stat.Where(s => s.User.depname == info.depname);
}
if (!string.IsNullOrEmpty(info.printname))
{
stat = stat.Where(s => s.printname.Contains(info.printname));
}
if (info.printcolor != null)
{
stat = stat.Where(s => s.printcolor == info.printcolor);
}
if (info.printingtype != null)
{
stat = stat.Where(s => s.printingtype == info.printingtype);
}
if (info.checkupstate != null)
{
stat = stat.Where(s => s.checkupstate == (info.checkupstate == ) ? true : false);
}
if (info.printstate != null)
{
stat = stat.Where(s => s.printstate == (info.printstate == ) ? true : false);
}
if (!string.IsNullOrEmpty(info.userrealname))
{
stat = stat.Where(p => p.User.realname == info.userrealname);
}
if (info.begintime != null)
{
var start = info.begintime;
var end = info.endtime == null ? DateTime.Now : info.endtime;
stat = stat.Where(p => p.addtime > start && p.addtime < end);
}
//if (Request.IsAjaxRequest())
//{
//}
return stat;
}

这样就完成了从数据库中查询数据,然后导出到excel

asp.net MVC 导出查询结果到Excel的更多相关文章

  1. ASP.NET MVC导出excel

    ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...

  2. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  3. asp.net mvc异步查询

    对于asp.net mvc异步查询 如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合m ...

  4. [转]ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  5. ASP.NET MVC 导出CSV文件

    ASP.NET MVC   导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...

  6. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  7. 对于asp.net mvc异步查询

    如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合mvc实现一个产品列表的Demo. 问 ...

  8. ASP.NET MVC 导出Word报表

    最近要做MVC导出Word报表功能.查了查资料发现一个好用的插件就是Aspose.Word.这个插件也很有名气,也很好用. 1.首先就是引用该插件 2.填充Word模版 3.后台操作 private ...

  9. ASP.NET MVC导出excel npoi

    使用npoi组件 前端代码: @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", ne ...

随机推荐

  1. [HDU6315]Naive Operations(线段树+树状数组)

    构造一个序列B[i]=-b[i],建一颗线段树,维护区间max, 每次区间加后再询问该区间最大值,如果为0就在树状数组中对应的值+1(该操作可能进行多次) 答案在树状数组中找 其实只用一颗线段树也是可 ...

  2. 动态代理以及对应Spring中AOP源码分析

    AOP(面向切面编程)在Spring中是被广泛应用的(例如日志,事务,权限等),而它的基本原理便是动态代理. 我们知道动态代理有两种:基于JDK的动态代理以及基于CGlib动态代理.以下是两种动态代理 ...

  3. [Real World Haskell翻译]第27章 网络通信和系统日志 Sockets and Syslog

    第27章 网络通信和系统日志 Sockets and Syslog 基础网络 在本书的前面几章,我们讨论了运转在网络上的服务.其中的两个例子是客户端/服务器架构的数据库和Web服务.当需要制定一个新的 ...

  4. mybatis入门(二):增删改查

    mybatis的原理: 1.mybatis是一个持久层框架,是apache下的顶级项目 mybatis托管到googlecode下,目前托管到了github下面 2.mybatis可以将向prepar ...

  5. 优步UBER司机全国各地奖励政策汇总 (2月15日-2月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. 成都Uber优步司机奖励政策(2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. textview的阴影线

    android:shadowColor="#000000" android:shadowDx="1" android:shadowDy="1" ...

  8. 第五模块:WEB开发基础 第3章·BootStrap&JQuery开发

    01-JQuery介绍 02-jQuery文件引入和加载的区别 03-jQuery的基础选择器 04-jQuery的层级选择器 05-jQuery的基本过滤选择器 06-jQuery的属性选择器 07 ...

  9. 第一阶段·Linux运维基础 第3章·文件属性、正则表达式、文件权限

    01-文件属性内容介绍 02- inodeyublock讲解 03-访问oldboyfile的寻宝过程 04-inode与block小结 05-磁盘空间不足案例详解 06-Linux文件类型及拓展名 ...

  10. CentOS 7.2使用tomcat部署jenkins2.130

    一.jenkins介绍 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...