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 ...
随机推荐
- BZOJ1432_Function_KEY
题目传送门 找规律. 画一个像这样的图: 不同颜色为不同层,因为函数图像可对称,所以只考虑K<=N/2的情况. 最小为min(K,N-K+1)*2. N=1时特殊考虑,答案为1. code: # ...
- OracleLinux上安装Oracle11g图解
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackgao@gmail. ...
- 成都优步uber司机第一组与第二组的区别
成都优步uber司机被分成了两组,两组的奖励方式不相同,下面我们先来看看官方给出的奖励方式: 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Uber司机(全国版最 ...
- python字符串格式化符号及转移字符含义
博文出自鱼C论坛文章 http://bbs.fishc.com/thread-39140-1-1.html
- Habse中Rowkey的设计原则——通俗易懂篇
Hbase的Rowkey设计原则 一. Hbase介绍 HBase -> Hadoop Database,HBase是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它 ...
- springboot 读写excel
添加两个坐标: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...
- SpringCloud Eureka 服务注册与服务发现
一.Eureka简介 spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只 ...
- 关于 NPOI 导出的 Excel 出现“部分内容有问题” 的解决方法
近期发现使用 NPOI 导出的 Excel 文件,有部分用户反映在打开时报错,测试了一下,发现在低版本的 Office 中(2003版,配合2007格式兼容包)打开正常,但在高版本 Office 中, ...
- NPOI List数据源 导出excel
List数据源生成HSSFWorkbook通用方法: public class WorkBook { public static HSSFWorkbook BuildSwitchData<T&g ...
- iWebShop安装教程
要进行iWebShop测试,要先在本地电脑上安装iWebShop运行环境,之后再安装iWebShop程序,接下来我就一步步讲解,如何安装iWebShop程序. ##一.运行环境搭建 这里我推荐新手使用 ...