使用npoi插件将excel文件导出

大致流程:前端使用URL地址的方式跳转到action后返回file类型数据

js:

 window.location.href = '/Home/index?Id=' + id

 后台代码:

/// <summary>
        /// 导出对比结果
        /// </summary>
        /// <param name="quarter"></param>
        /// <returns></returns>
        public FileResult index(int Id)
        {
            try
            {
                var list = 可以根据传入参数查找到数据库中需要导出的数据列表

                //创建Excel文件的对象
                NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
                //创建样式
                var style = book.CreateCellStyle();
                //单元格样式:水平对齐居中
                style.Alignment = HorizontalAlignment.Center;
                //字体样式
                var font=book.CreateFont();
                //加粗
                font.Boldweight=short.MaxValue;
                //字体样式加入到单元格样式里面
                style.SetFont(font);

                //添加一个sheet
                NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
                var titleCell = sheet1.AddMergedRegion(new CellRangeAddress(0, 2, 0, 3));
                var row = sheet1.CreateRow(0);
                row.CreateCell(0).SetCellValue("签到标题:" + title + " 反馈进度:" + feedBackProgress);
                //标题的样式设置
                row.CreateCell(0).CellStyle = style;
                //给sheet1添加第一行的头部标题
                NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(3);

                row1.CreateCell(0).SetCellValue("姓名");
                row1.CreateCell(1).SetCellValue("性别");
                row1.CreateCell(2).SetCellValue("年龄");
                //将数据逐步写入sheet1各个行

                for (int i = 0; i < list.Count; i++)
                {
                    NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 4);
                    rowtemp.CreateCell(0).SetCellValue(list[i].name);
                    rowtemp.CreateCell(1).SetCellValue(list[i].sex);//如果是时间字段需要tostring确定格式,否则导出到数据库的时候会变成一个小数的数字
                    rowtemp.CreateCell(2).SetCellValue(list[i].age);
                }
                // 写入到客户端 
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                book.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);
                return File(ms, "application/vnd.ms-excel", string.Format("你的excel-{0}.xls", DateTime.Now.ToString("yyyyMMddhhmmss")));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message + ex.StackTrace);
                return null;
            }
        }

猜你喜欢

转载自www.cnblogs.com/llcdbk/p/10578740.html