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 ...
随机推荐
- Java线程和多线程(十二)——线程池基础
Java 线程池管理多个工作线程,其中包含了一个队列,包含着所有等待被执行的任务.开发者可以通过使用ThreadPoolExecutor来在Java中创建线程池. 线程池是Java中多线程的一个重要概 ...
- web项目由简入繁
1.MVC--[javaBean+接口+jdbc+servlet+jsp] 用javaBean做数据模型, 数据操作放到DAO层 前端页面展示由JSP完成 页面跳转由servlet完成,页面数据传递用 ...
- 北京Uber优步司机奖励政策(11月23日~11月29日)
用户组:人民优步"关羽组"(适用于11月23日-11月29日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最 ...
- 成都Uber优步司机奖励政策(3月9日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 长沙Uber优步司机奖励政策(12月28日到1月3日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Unknown host 'services.gradle.org' 解决方法
报错如下: Unknown host 'services.gradle.org'. You may need to adjust the proxy settings in Gradle. Learn ...
- 「日常训练」Case of Matryoshkas(Codeforces Round #310 Div. 2 C)
题意与分析(CodeForces 556C) 为了将所有\(n\)个娃娃编号递增地串在一起(原先是若干个串,每个串是递增的), 我们有两种操作: 拆出当前串中最大编号的娃娃(且一定是最右边的娃娃). ...
- Qt-QML-给我的导航条写一个动画-State-Transition
上篇中,我已经写出一个导航条的,虽然太丑了,不过功能是有了,这次我将要给我的导航条加一个动画,先看下演示效果 这次我是用的是一个状态动画,大致原理就是写出一个空间的几个状态,完了再加一个过度动画,这里 ...
- gitlab-登录账户遇到ERROR: Permission to XXX.git denied to user报错怎么办
碰到这个问题就意味着没有访问账户的权限,没有把访问电脑与访问账户用ssh_key关联起来,解决流程: 1.查看本地是否有ssh_key 笔者用的是git bash来输入命令 ls -al ~/.ssh ...
- 在Android上运用Anko和Kotlin开发数据库:SQLite从来不是一件轻松的事(KAD25)
作者:Antonio Leiva 时间:Mar 30, 2017 原文链接:https://antonioleiva.com/databases-anko-kotlin/ 事实告诉我们:在Androi ...