asp.net mvc NPOI 生成Excel文件

 private string PushToDown(string addtime)
        {
            DataTable dt = _bCreateCode.PushtoExcel(addtime);
            //1、实例化workbook工作簿对象
            HSSFWorkbook hssfworkbook = new HSSFWorkbook();
            //2、创建文档摘要信息
            DocumentSummaryInformation dsf = PropertySetFactory.CreateDocumentSummaryInformation();
            dsf.Company = "公司名称";//公司
            dsf.Category = "类别";//类别
            //CustomProperties 自定义属性
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Author = "作者";//作者
            si.Subject = "序列号";//主题
            si.Title = "序列号列表";//标题
            //si.RevNumber = "1.0";//版本号
            //3、将写好的文档摘要 赋值workbook对象
            hssfworkbook.DocumentSummaryInformation = dsf;
            hssfworkbook.SummaryInformation = si;
            //4、创建Sheet
            HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet1");
            //HSSFSheet Sheet2 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet2");
            //HSSFSheet Sheet3 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet3");
            //5、创建页眉页脚
            sheet1.CreateRow(0).CreateCell(1).SetCellValue(123);
            sheet1.Header.Center = "统计数据";
            sheet1.Header.Left = "logo.png";
            sheet1.Header.Right = "address";
            sheet1.Footer.Center = "page";
            //6、标题
            string yeartime = DateTime.Today.Year + "-" + DateTime.Today.Month + "-" + DateTime.Today.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second;

            HSSFCell fcell = (HSSFCell)sheet1.CreateRow(0).CreateCell(0);//第一行
            fcell.SetCellValue(addtime + "序列号列表");//文本
            //合并单元格
            sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 13));//2.0使用 2.0以下为Region
            //标题样式
            HSSFCellStyle fCellStyle = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            HSSFFont ffont = (HSSFFont)hssfworkbook.CreateFont();
            ffont.FontHeight = 20 * 20;
            ffont.FontName = "宋体";
            ffont.Color = HSSFColor.Black.Index;
            fCellStyle.SetFont(ffont);
            fCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直对齐
            fCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平对齐
            fcell.CellStyle = fCellStyle;

            //7、设置单元格格式 创建单元格
            /*模拟设定7列*/
            HSSFDataFormat dataformat = (HSSFDataFormat)hssfworkbook.CreateDataFormat();//数据格式
            HSSFFont font = (HSSFFont)hssfworkbook.CreateFont();//数据字体
            font.Color = HSSFColor.Black.Index; //颜色
            font.IsItalic = false;//斜体
            font.IsStrikeout = false;//加粗
            font.FontName = "宋体";//字体

            //必不可少 可以变更在循环输出数据时指定类型 需要调用sqlDbType 较复杂
            //Id  int类型
            HSSFCell cell1 = (HSSFCell)sheet1.CreateRow(1).CreateCell(0); //创建单元格
            HSSFCellStyle cellStyle1 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();//单元格样式
            cellStyle1.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            // CellRangeAddressList ranglist1 = new CellRangeAddressList(0, 65535, 0, 0);//集合限定类型
            // DVConstraint constraint1 = DVConstraint.CreateNumericConstraint(DVConstraint.ValidationType.INTEGER, DVConstraint.OperatorType.BETWEEN, "0", "100");//约束
            cellStyle1.SetFont(font);
            cell1.CellStyle = cellStyle1;
            cell1.SetCellValue("");

            //Name
            HSSFCell cell2 = (HSSFCell)sheet1.CreateRow(1).CreateCell(1);
            HSSFCellStyle cellStyle2 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle2.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle2.SetFont(font);
            cell2.CellStyle = cellStyle2;
            cell2.SetCellValue("");

            //phone
            HSSFCell cell3 = (HSSFCell)sheet1.CreateRow(1).CreateCell(2);
            HSSFCellStyle cellStyle3 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle3.SetFont(font);
            cell3.CellStyle = cellStyle3;
            cell3.SetCellValue("");

            //address
            HSSFCell cell4 = (HSSFCell)sheet1.CreateRow(1).CreateCell(3);
            HSSFCellStyle cellStyle4 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle4.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle4.SetFont(font);
            cell4.CellStyle = cellStyle4;
            cell4.SetCellValue("");

            //Status
            HSSFCell cell5 = (HSSFCell)sheet1.CreateRow(1).CreateCell(4);
            HSSFCellStyle cellStyle5 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle5.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle5.SetFont(font);
            cell5.CellStyle = cellStyle5;
            cell5.SetCellValue("");

            //balance
            HSSFCell cell6 = (HSSFCell)sheet1.CreateRow(1).CreateCell(5);
            HSSFCellStyle cellStyle6 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cell6.SetCellValue("");
            cellStyle6.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle6.SetFont(font);
            cell6.CellStyle = cellStyle6;

            //CreateDate
            HSSFCell cell7 = (HSSFCell)sheet1.CreateRow(1).CreateCell(6);
            HSSFCellStyle cellStyle7 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle7.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle7.SetFont(font);
            cell7.CellStyle = cellStyle7;
            cell7.SetCellValue("");

            HSSFCell cell8 = (HSSFCell)sheet1.CreateRow(1).CreateCell(7);
            HSSFCellStyle cellStyle8 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle8.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle8.SetFont(font);
            cell8.CellStyle = cellStyle8;
            cell8.SetCellValue("");

            HSSFCell cell9 = (HSSFCell)sheet1.CreateRow(1).CreateCell(8);
            HSSFCellStyle cellStyle9 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle9.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle9.SetFont(font);
            cell9.CellStyle = cellStyle9;
            cell9.SetCellValue("");

            HSSFCell cell10 = (HSSFCell)sheet1.CreateRow(1).CreateCell(9);
            HSSFCellStyle cellStyle10 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle10.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle10.SetFont(font);
            cell10.CellStyle = cellStyle10;
            cell10.SetCellValue("");

            HSSFCell cell11 = (HSSFCell)sheet1.CreateRow(1).CreateCell(10);
            HSSFCellStyle cellStyle11 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle11.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle11.SetFont(font);
            cell11.CellStyle = cellStyle11;
            cell11.SetCellValue("");

            HSSFCell cell12 = (HSSFCell)sheet1.CreateRow(1).CreateCell(11);
            HSSFCellStyle cellStyle12 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle12.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle12.SetFont(font);
            cell12.CellStyle = cellStyle12;
            cell12.SetCellValue("");

            HSSFCell cell13 = (HSSFCell)sheet1.CreateRow(1).CreateCell(12);
            HSSFCellStyle cellStyle13 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
            cellStyle13.DataFormat = HSSFDataFormat.GetBuiltinFormat("");
            cellStyle13.SetFont(font);
            cell13.CellStyle = cellStyle13;
            cell13.SetCellValue("");

            //8、创建单元格 加入数据
            HSSFRow r = (HSSFRow)sheet1.CreateRow(1);//第二行 标题
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                r.CreateCell(i).SetCellValue(dt.Columns[i].ToString());
            }
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    HSSFRow row = (HSSFRow)sheet1.CreateRow(i + 2);//写入行
                    for (int j = 0; j < dt.Columns.Count; j++)//写入列
                    {
                        row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
                    }
                }
            }

            FileStream fs = new FileStream(Server.MapPath("~/PushtoExcel/" + yeartime + ".xls"), FileMode.Create);
            hssfworkbook.Write(fs);
            fs.Close();
            return yeartime + ".xls";
        }
原文地址:https://www.cnblogs.com/li5206610/p/5006516.html