asp.net MVC 导出查询结果到Excel
首先在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的更多相关文章
- ASP.NET MVC导出excel
ASP.NET MVC导出excel 要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式 ...
- ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- asp.net mvc异步查询
对于asp.net mvc异步查询 如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合m ...
- [转]ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- ASP.NET MVC 导出CSV文件
ASP.NET MVC 导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...
- ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...
- 对于asp.net mvc异步查询
如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合mvc实现一个产品列表的Demo. 问 ...
- ASP.NET MVC 导出Word报表
最近要做MVC导出Word报表功能.查了查资料发现一个好用的插件就是Aspose.Word.这个插件也很有名气,也很好用. 1.首先就是引用该插件 2.填充Word模版 3.后台操作 private ...
- ASP.NET MVC导出excel npoi
使用npoi组件 前端代码: @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", ne ...
随机推荐
- fedora/centos下gcc编译出现gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory
fedora/centos下gcc编译出现gcc: error trying to exec 'cc1plus': execvp: No such file or directory解决办法 翻译自: ...
- C#、C++、Java、Python 选择哪个好?
C#.C++.Java.Python 选择哪个好? 2019年03月06日 16:54:34 编程小火车 阅读数:214 首先排除Python,光动态语言一个理由,就已经万劫不复了.无论有多少所谓 ...
- auto、static、extern
- LeetCode: 59. Spiral Matrix II(Medium)
1. 原题链接 https://leetcode.com/problems/spiral-matrix-ii/description/ 2. 题目要求 给定一个正整数n,求出从1到n平方的螺旋矩阵.例 ...
- 百度地图 ver2.0 api
百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富.交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特 ...
- Entity Framework Core 导航属性 加载数据
Loading Related Data https://docs.microsoft.com/en-us/ef/core/querying/related-data Eager loading me ...
- apache+php+mysql开发环境搭建
一.Apache 因为Apache官网只提供源代码,如果要使用必须得自己编译,这里我选择第三方安装包Apache Lounge. 进入Apachelounge官方下载地址:http://w ...
- lesson 22 by heart
lesson 22 by heart on end = continuously 连续不断地 know/learn sth by heart 记忆sth falter: speak hesitantl ...
- Spring 配置请求过滤器,编码格式设为UTF-8,避免中文乱码
<!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> <filter> <filter-name>springUtf8Encoding</fi ...
- 【转】cocos2d-x如何优化内存的应用
原地址:http://cblog.chinadaily.com.cn/blog-942327-4327173.html 注:自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么 ...