asp.net MVC 导出查询结果到Excel

news/2024/7/7 13:39:10

首先在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(0);
            row1.CreateCell(0).SetCellValue("文印名称");
            row1.CreateCell(1).SetCellValue("份数");
            row1.CreateCell(2).SetCellValue("页数"); 
            row1.CreateCell(3).SetCellValue("单双面");
            row1.CreateCell(4).SetCellValue("打印色彩");
            row1.CreateCell(5).SetCellValue("纸张大小");
            row1.CreateCell(6).SetCellValue("印刷类型");
            row1.CreateCell(7).SetCellValue("申请时间");
            row1.CreateCell(8).SetCellValue("申请人");
        
            //....N行

            //将数据逐步写入sheet1各个行
            for (int i = 0; i < data.Count; i++)
            {
                NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
                rowtemp.CreateCell(0).SetCellValue(data[i].printname.ToString());
                rowtemp.CreateCell(1).SetCellValue(data[i].copynumber.ToString());
                rowtemp.CreateCell(2).SetCellValue(data[i].pagernumber.ToString());
                rowtemp.CreateCell(3).SetCellValue(data[i].printmode.ToString()); 
                rowtemp.CreateCell(4).SetCellValue(data[i].printcolor.ToString());
                rowtemp.CreateCell(5).SetCellValue(data[i].printpagersize.ToString());
                rowtemp.CreateCell(6).SetCellValue(data[i].printingtype.ToString());
                rowtemp.CreateCell(7).SetCellValue(data[i].addtime.ToString());
                rowtemp.CreateCell(8).SetCellValue(data[i].User.realname.ToString());
                

                //....N行
            }
            // 写入到客户端 
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            book.Write(ms);
            ms.Seek(0, 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 == 1) ? true : false);
            }
            if (info.printstate != null)
            {
                stat = stat.Where(s => s.printstate == (info.printstate == 1) ? 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

转载于:https://www.cnblogs.com/lunawzh/p/4499275.html


http://www.niftyadmin.cn/n/3783178.html

相关文章

git-rebase用法总结

git rebase&#xff0c;顾名思义&#xff0c;就是重新定义&#xff08;re&#xff09;起点&#xff08;base&#xff09;的作用&#xff0c;即重新定义分支的版本库状态。要搞清楚这个东西&#xff0c;要先看看版本库状态切换的两种情况&#xff1a; 我们知道&#xff0c;在某个…

linux下如何设置vip(虚拟ip)-shenyanxxxy-ChinaUnix博客

linux下如何设置vip&#xff08;虚拟ip&#xff09;-shenyanxxxy-ChinaUnix博客

JAVA为什么会空指针异常

1.所谓的指针&#xff0c;就是java中的对象的引用。比如String s;这个s就是指针。 2.所谓的空指针&#xff0c;就是指针的内容为空&#xff0c;比如上面的s,如果令它指向null,就是空指针。 3.所谓的空指针异常&#xff0c;就是一个指针是空指针&#xff0c;你还要去操作它&…

Pull Request的正确打开方式(如何在GitHub上贡献开源项目)

GitHub的官方帮助如下&#xff1a; Fork A Repo: https://help.github.com/articles/fork-a-repo Using Pull Requests: https://help.github.com/articles/using-pull-requests Merging a pull request: https://help.github.com/articles/merging-a-pull-request Closing …

自动安装zabbix

#!/usr/bin/env python #codingutf-8 #2015-5-13 #安装zabbix Server import sys import commands import MySQLdb as mdb zabbix_config"/etc/zabbix/zabbix_server.conf" zabbix_php "/etc/httpd/conf.d/zabbix.conf" def get_local_ip(ifname):import …

XCode升级导致的IAP失败的问题

应用提交苹果测试之前&#xff0c;一般都会在沙盒环境里进行测试充值。用沙盒的测试帐号进行充值的时候&#xff0c;服务端拿到苹果返回的receipt-data后&#xff0c;向苹果服务端进行校验的时候&#xff0c;如果返回错误码21007则再去沙盒环境去验证。 沙盒环境的校验地址&…

CentOS 6.4 命令行 安装 VMware Tools

新建cdrom挂载目录mkdir /mnt/cdrom挂载光驱mount -t auto /dev/cdrom /mnt/cdrom这命令就是把CentOS CDROM挂载在/mnt/cdrom目录中&#xff0c;就可以访问里面的内容了&#xff1b;使用光驱中的文件&#xff0c;进行安装[rootCentOS6 /]# cd /mnt/cdrom[rootCentOS6 /]# ls -a…

Java 集合类Collection、List

Collection接口&#xff1a;1.集合可以理解为一个动态的对象数组&#xff0c;不同的是集合中的对象内容可以任意扩充。也就是说在集合当中的操作比较方便&#xff0c;容易添加或者删除2.集合的特点&#xff1a;性能高容易扩展和修改这也是为什么使用集合而不使用数组的主要原因…