MVC之Excel导出表格数据

本文详细介绍了如何在MVC框架中利用NPOI库进行Excel表格数据导出的过程,包括引用NPOI插件、通过LINQ查询数据、创建Excel对象及工作簿、设置表头、填充数据以及最终的文件输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC之Excel导出表格数据
第一步:先把Excel导出的插件(NPOI)引用进来;
第二步:然后通过linq语句查询出需要导出的数据表\集合(list),当然前提是你有引用了数据库实体模型,并实例化了数据库实体;
例如:
在当前类下面实例化实体
Models.GZJSJEntities myModels = new Models.GZJSJEntities();
然后创建一个导出数据的方法,通过页面JavaScript脚本代码调用并执行导出;
1、通过linq查询数据列表\表格
在这里插入图片描述
2、写完linq查询语句接着写导出表格的准备工作,创建Excel对象,以及Excel对象工作簿

 //第一步:创建Excel对象
       NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
 //第二步:创建Excel对象的工作簿
       NPOI.SS.UserModel.ISheet sheet = book.CreateSheet();

3、设置Excel表头,添加表头的列,例如:

 #region Excel表头设置
            //给sheet添加第一行的头部标题
            NPOI.SS.UserModel.IRow row1 = sheet.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("进货价");
            row1.CreateCell(11).SetCellValue("药品批号");
            row1.CreateCell(12).SetCellValue("有效期");
            row1.CreateCell(13).SetCellValue("规格");
            row1.CreateCell(14).SetCellValue("出库日期");
            #endregion

然后循环遍历拿刚刚linq中查询出来的列表给工作簿的每行、列添加数据;

  for (int i = 0; i < listOutBankDetail.Count; i++)
            {
                NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 1);
                row.CreateCell(0).SetCellValue(listOutBankDetail[i].OutBankCode);
                row.CreateCell(1).SetCellValue(listOutBankDetail[i].OutBanker);
                row.CreateCell(2).SetCellValue(listOutBankDetail[i].Pharmacy);
                row.CreateCell(3).SetCellValue(listOutBankDetail[i].DrugName);
                row.CreateCell(4).SetCellValue(listOutBankDetail[i].DrugType);
                row.CreateCell(5).SetCellValue(listOutBankDetail[i].DrugUnit);
                row.CreateCell(6).SetCellValue(listOutBankDetail[i].OutBankCount.ToString());
                row.CreateCell(7).SetCellValue(listOutBankDetail[i].ResaleCost.ToString());
                row.CreateCell(8).SetCellValue(listOutBankDetail[i].EnterPrice.ToString());
                row.CreateCell(12).SetCellValue(listOutBankDetail[i].strInDate);
                row.CreateCell(13).SetCellValue(listOutBankDetail[i].Standard);
                row.CreateCell(14).SetCellValue(listOutBankDetail[i].strOutBankDate);
            }

4、最后就是处理文件,通过流的形式输出:
MemoryStream BookStream = new MemoryStream();//定义文件流 book.Write(BookStream);//将工作薄写入文件流 //输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度 BookStream.Seek(0, SeekOrigin.Begin); //输出的文件名称 string filename = "出库数据明细" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; //返回 return File(BookStream, "application/vnd.ms-excel", filename); // 文件类型/文件名称
以上代码就是导出数据方法中的代码分析了,导出结果大概如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值