MVC 使用NPOI导出Excel

MVC 使用NPOI导出Excel

最近在把C/S搬到B/S上面,MVC很少做过简单来聊一下在前端做导出

JS代码:

按钮就不放上去了,用平常的<input type:“button” οnclick=“DataExport()”>就可以,然后加入点击事件

<script>
    //导出按钮
    function DataExport() {
        window.location.href = "@Url.Action("ExportByNPOI")";
    }
</script>

后端代码:

这里的数据源是之前保存到Session里的,而且这是我第一次认识到直接将数据流返回到前端,使用location.href来接收,选择文档保存路径之后就直接完成下载的动作

        /// <summary>
        /// 导出Excel
        /// </summary>
        /// <param name="VisitNo"></param>
        /// <returns></returns>
        public ActionResult ExportByNPOI()
        {
            List<IPFeeRecord> data = Session["IPFeeRecord"] as List<IPFeeRecord>;

            //获取当前日期
            var nowDate = DateTime.Now.Date.ToString("yyyy年MM月dd日");
            //获取病人名称
            var Name = Session["Name"].ToString();
            //文件名
            string filename = Name + "_" + nowDate + "_" + "手术费用.xls";

            //2、创建Excel文件的对象
            HSSFWorkbook excel = new HSSFWorkbook();
            //3、添加一个sheet
            ISheet sheet = excel.CreateSheet("Sheet1");

            //合并单元格
            //把C3:E5合并为一个单元格 并赋值
            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 1, 0, 4));
            sheet.CreateRow(0).CreateCell(0).SetCellValue("华山手术费用清单");

            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(2, 2, 0, 4));
            sheet.CreateRow(2).CreateCell(0).SetCellValue("姓名:" + Session["Name"] + " " + "住院号:" + Session["Code"] + " " + "日期:" + nowDate);


            //给sheet1添加标题行
            IRow head = sheet.CreateRow(3);
            head.CreateCell(0).SetCellValue("费用名称");
            head.CreateCell(1).SetCellValue("执行科室");
            head.CreateCell(2).SetCellValue("单价");
            head.CreateCell(3).SetCellValue("数量");
            head.CreateCell(4).SetCellValue("总价");
            //将数据逐步写入sheet1各个行
            for (int i = 0; i < data.Count; i++)
            {
                IRow row = sheet.CreateRow(i + 4);
                row.CreateCell(0).SetCellValue(data[i].ITEM_NAME);
                row.CreateCell(1).SetCellValue(data[i].EXECUTE_DEPTName);
                row.CreateCell(2).SetCellValue(data[i].PACKAGE_PRICE.ToString());
                row.CreateCell(3).SetCellValue(data[i].EXE_PIECE_QUANTITY.ToString());
                row.CreateCell(4).SetCellValue(data[i].APPLY_DTL_SEQ);
            }

            IRow rows = sheet.CreateRow(data.Count + 4);
            rows.CreateCell(4).SetCellValue("合计:" + Session["LumpSum"].ToString());

            //写入到客户端
            MemoryStream ms = new MemoryStream();
            excel.Write(ms);
            ms.Seek(0, SeekOrigin.Begin);
            return File(ms, "application/vnd.ms-excel", filename);
        }

如果本篇文章对您有帮助请点赞分享,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值