.net core 3.1 npoi导出excel文档

本文介绍了一个使用.NET Core 3.1和NPOI库导出Excel文档的实例,展示了如何从数据源获取信息并将其格式化到Excel中,包括数据格式设置、单元格合并及最终文件的输出。

.net core 3.1 npoi导出excel文档

实例

[HttpPost]
        [Route("Excel/Installer")]
        public ActionResult Excel1([FromForm]string name, [FromForm]DateTime? stime, [FromForm] DateTime etime)
        {
            
            if (etime == null)
            {
                etime = DateTime.Now;
            }
            //取出数据源
            var result = _orderRepository.FindByInstaller(name, stime, etime);
            var paymonry = _payRepository.FindByName(name);
            double allmoney = 0;
            foreach (var item in paymonry)
            {
                allmoney = allmoney + item.money;
            }
            
            HSSFWorkbook book = new HSSFWorkbook();
            ISheet s1 = book.CreateSheet("安装人订单列表");
            //表格样式
            IDataFormat dataformat = book.CreateDataFormat();
            ICellStyle style0 = book.CreateCellStyle();
            style0.DataFormat = dataformat.GetFormat("yyyy年MM月dd日");
            if (name != null)
            {
                IRow r1 = s1.CreateRow(0);
                r1.CreateCell(0).SetCellValue("安装人");
                r1.CreateCell(1).SetCellValue(name);
            }
            else
            {
                return BadRequest("安装人不能为空");
            }
            IRow r2 = s1.CreateRow(1);
            r2.CreateCell(0).SetCellValue("订单号");
            r2.CreateCell(1).SetCellValue("业务内容");
            r2.CreateCell(2).SetCellValue("安装费");
            r2.CreateCell(3).SetCellValue("支付金额");
            r2.CreateCell(4).SetCellValue("日期");
            int i = 0;
            double installation = 0;
            for (; i < result.Count; i++)
            {
                NPOI.SS.UserModel.IRow rt = s1.CreateRow(i + 2);
                rt.CreateCell(0).SetCellValue(result[i].order_id);
                rt.CreateCell(1).SetCellValue(result[i].info);
                rt.CreateCell(2).SetCellValue(result[i].installation);
                //合并单元格
                CellRangeAddress region = new CellRangeAddress(2, i + 2, 3, 3);
                s1.AddMergedRegion(region);
                rt.CreateCell(3).SetCellValue(allmoney);
                rt.CreateCell(4).SetCellValue(result[i].date.ToString("yyyy/MM/dd"));
                installation = installation + result[i].installation;
            }
            NPOI.SS.UserModel.IRow rn = s1.CreateRow(i + 3);
            rn.CreateCell(0).SetCellValue("合计");
            rn.CreateCell(2).SetCellValue(installation);
            //输出的文件名称
            string fileName = "安装人员订单表" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
            //把Excel转为流,输出
            //创建文件流
            System.IO.MemoryStream bookStream = new System.IO.MemoryStream();
            //将工作薄写入文件流
            book.Write(bookStream);

            //输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
            bookStream.Seek(0, System.IO.SeekOrigin.Begin);
            //Stream对象,文件类型,文件名称
            return File(bookStream, "application/vnd.ms-excel", fileName);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值