Exemple #1
0
 private void SetBorderTop(int firstRow, int lastRow, int firstCol, int lastCol)
 {
     HSSFRegionUtil.SetBorderTop(BorderStyle.Thin, new CellRangeAddress(firstRow, lastRow, firstCol, lastCol), currentSheet, workbook);
 }
        public ActionResult ExportData(string queryJson)
        {
            try
            {
                Pagination pagination = new Pagination();
                pagination.sord    = "asc";
                pagination.records = 0;
                pagination.page    = 1;
                pagination.rows    = 1000000000;
                var watch = CommonHelper.TimerStart();
                //pagination.p_kid = "v.USERID";
                //pagination.p_fields = " v.FULLNAME,v.DEPARTMENTID,v.DEPARTMENTCODE, v.REALNAME,v.DUTYID,v.DUTYNAME,v.REMARK ,v.DEPTTYPE,v.dkremark,v.DEPTSORT , v.SORTCODE,1 as personcount ";
                //pagination.p_tablename = @" V_ATTENDANCEWARNING v";
                //pagination.conditionJson = "  v.DEPARTMENTID not in ('0')  ";
                //Operator user = ERCHTMS.Code.OperatorProvider.Provider.Current();

                var exportTable = hikinoutlogbll.GetAttendanceWarningPageList(pagination, queryJson);
                ////设置导出格式
                //ExcelConfig excelconfig = new ExcelConfig();
                //excelconfig.Title = "人员考勤告警";
                //excelconfig.TitleFont = "微软雅黑";
                //excelconfig.TitlePoint = 16;
                //excelconfig.FileName = "人员考勤告警.xls";
                //excelconfig.IsAllSizeColumn = true;
                //List<ColumnEntity> listColumnEntity = new List<ColumnEntity>();
                //excelconfig.ColumnEntity = listColumnEntity;
                //ColumnEntity columnentity = new ColumnEntity();

                ////需跟数据源列顺序保持一致
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "fullname", ExcelColumn = "单位名称", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "realname", ExcelColumn = "姓名", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dutyname", ExcelColumn = "岗位名称", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dkremark", ExcelColumn = "备注", Width = 250 });


                ////调用导出方法
                //ExcelHelper.ExcelDownload(exportTable, excelconfig);                ////设置导出格式
                //ExcelConfig excelconfig = new ExcelConfig();
                //excelconfig.Title = "人员考勤告警";
                //excelconfig.TitleFont = "微软雅黑";
                //excelconfig.TitlePoint = 16;
                //excelconfig.FileName = "人员考勤告警.xls";
                //excelconfig.IsAllSizeColumn = true;
                //List<ColumnEntity> listColumnEntity = new List<ColumnEntity>();
                //excelconfig.ColumnEntity = listColumnEntity;
                //ColumnEntity columnentity = new ColumnEntity();

                ////需跟数据源列顺序保持一致
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "fullname", ExcelColumn = "单位名称", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "realname", ExcelColumn = "姓名", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dutyname", ExcelColumn = "岗位名称", Width = 50 });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dkremark", ExcelColumn = "备注", Width = 250 });


                ////调用导出方法
                //ExcelHelper.ExcelDownload(exportTable, excelconfig);

                //导出excel
                string       title    = "人员考勤告警";
                HSSFWorkbook workbook = new HSSFWorkbook();//创建Workbook对象
                HSSFSheet    sheet    = workbook.CreateSheet("Sheet1") as HSSFSheet;
                sheet.DefaultRowHeight = 30 * 20;
                int column   = exportTable.Columns.Count;
                int indexRow = 0;

                //标题
                if (!string.IsNullOrEmpty(title))
                {
                    IRow headerRow = sheet.CreateRow(indexRow);

                    headerRow.CreateCell(0).SetCellValue(title);

                    //合并单元格
                    CellRangeAddress region = new CellRangeAddress(0, 0, 0, 3);
                    sheet.AddMergedRegion(region);

                    ICellStyle cellstyle = workbook.CreateCellStyle();
                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
                    cellstyle.Alignment         = HorizontalAlignment.Center;

                    IFont font = workbook.CreateFont();
                    font.FontHeightInPoints = 22;
                    font.FontName           = "宋体";
                    font.Boldweight         = (short)FontBoldWeight.Bold;
                    cellstyle.SetFont(font);

                    var cell = sheet.GetRow(0).GetCell(0);
                    cell.CellStyle = cellstyle;

                    HSSFRegionUtil.SetBorderBottom(BorderStyle.Thin, region, sheet, workbook); //下边框
                    HSSFRegionUtil.SetBorderLeft(BorderStyle.Thin, region, sheet, workbook);   //左边框
                    HSSFRegionUtil.SetBorderRight(BorderStyle.Thin, region, sheet, workbook);  //右边框
                    HSSFRegionUtil.SetBorderTop(BorderStyle.Thin, region, sheet, workbook);    //上边框
                    indexRow++;
                }

                //列头样式
                ICellStyle headerStyle = workbook.CreateCellStyle();
                headerStyle.Alignment         = HorizontalAlignment.Center;
                headerStyle.VerticalAlignment = VerticalAlignment.Center;
                headerStyle.BorderBottom      = BorderStyle.Thin;
                headerStyle.BorderLeft        = BorderStyle.Thin;
                headerStyle.BorderRight       = BorderStyle.Thin;
                headerStyle.BorderTop         = BorderStyle.Thin;

                IFont headerFont = workbook.CreateFont();
                headerFont.FontHeightInPoints = 16;
                headerFont.FontName           = "宋体";
                headerFont.Boldweight         = (short)FontBoldWeight.Bold;
                headerStyle.SetFont(headerFont);

                IRow row1 = sheet.CreateRow(indexRow);
                row1.CreateCell(0).SetCellValue("单位名称");
                row1.GetCell(0).CellStyle = headerStyle;
                row1.CreateCell(1).SetCellValue("姓名");
                row1.GetCell(1).CellStyle = headerStyle;
                row1.CreateCell(2).SetCellValue("岗位名称");
                row1.GetCell(2).CellStyle = headerStyle;
                row1.CreateCell(3).SetCellValue("备注");
                row1.GetCell(3).CellStyle = headerStyle;

                //普通单元格样式
                ICellStyle bodyStyle = workbook.CreateCellStyle();
                bodyStyle.Alignment         = HorizontalAlignment.Center;
                bodyStyle.VerticalAlignment = VerticalAlignment.Center;
                IFont font1 = workbook.CreateFont();
                font1.Color                   = HSSFColor.Black.Index;
                font1.Boldweight              = 25;
                font1.FontHeightInPoints      = 12;
                bodyStyle.FillForegroundColor = HSSFColor.White.Index;
                bodyStyle.SetFont(font1);
                //设置格式
                IDataFormat format = workbook.CreateDataFormat();

                //填充数据
                for (int i = 0; i < exportTable.Rows.Count; i++)
                {
                    indexRow++;
                    IRow rowTemp = sheet.CreateRow(indexRow);
                    rowTemp.Height = 62 * 20;
                    rowTemp.CreateCell(0).SetCellValue(exportTable.Rows[i]["fullname"].ToString() + "(" + exportTable.Rows[i]["personcount"].ToString() + ")");
                    rowTemp.CreateCell(1).SetCellValue(exportTable.Rows[i]["realname"].ToString());
                    rowTemp.CreateCell(2).SetCellValue(exportTable.Rows[i]["dutyname"].ToString());
                    rowTemp.CreateCell(3).SetCellValue(exportTable.Rows[i]["dkremark"].ToString());

                    rowTemp.GetCell(0).CellStyle = bodyStyle;
                    rowTemp.GetCell(1).CellStyle = bodyStyle;
                    rowTemp.GetCell(2).CellStyle = bodyStyle;
                    rowTemp.GetCell(3).CellStyle = bodyStyle;
                }
                sheet.AutoSizeColumn(0);
                sheet.AutoSizeColumn(1);
                sheet.AutoSizeColumn(2);
                sheet.AutoSizeColumn(3);
                //合并单元格
                MergeCells(sheet, exportTable, 0, 0, 0);
                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);

                return(File(ms, "application/vnd.ms-excel", title + ".xls"));
            }
            catch (Exception ex)
            {
            }
            return(Success("导出成功。"));
        }
        public ActionResult ExportData(Pagination pagination, string queryJson)
        {
            try {
                pagination.page          = 1;
                pagination.rows          = 100000000;
                pagination.p_kid         = "v_info.userid";
                pagination.p_fields      = @"";
                pagination.p_tablename   = "v_userinfo v_info left join base_department d on v_info.departmentid = d.departmentid left join (select * from HJB_PERSONSET where MODULETYPE = 1) t on v_info.userid = t.userid";
                pagination.conditionJson = " Account!='System'";
                pagination.sidx          = "DEPTSORTss,v_info.DEPTSORT asc,v_info.deptcode asc,v_info.userid";
                pagination.sord          = "desc";
                var data = hikinoutlogbll.GetTableUserRole(pagination, queryJson);

                var queryParam = queryJson.ToJObject();
                foreach (DataRow dr in data.Rows)
                {
                    if (dr["nature"].ToString() == "专业" || dr["nature"].ToString() == "班组")
                    {
                        //DataTable dt = departmentBLL.GetDataTable(string.Format("select fullname from base_department where encode=(select encode from base_department t where instr('{0}',encode)=1 and nature='{1}' and organizeid='{2}') or encode='{0}' order by deptcode", dr["DEPARTMENTCODE"], "部门", dr["organizeid"]));
                        //if (dt.Rows.Count > 0)
                        //{
                        //    string name = "";
                        //    foreach (DataRow dr1 in dt.Rows)
                        //    {
                        //        name += dr1["fullname"].ToString() + "/";
                        //    }
                        //    dr["dutyname"] = name.TrimEnd('/');
                        //}
                        dr["dutyname"] = dr["dutyname"] + "(" + dr["DEPTNAME"] + ")";
                    }

                    if (dr["userid"] != null)
                    {
                        string    sTime  = queryParam["sTime"].ToString();
                        string    eTime  = queryParam["eTime"].ToString();
                        string    userId = dr["userid"].ToString();
                        string    sql    = string.Format(@"select COUNT(a.USERID) as num from(select DISTINCT userid, inout, devicename, CREATEDATE from bis_hikinoutlog) a
                              left join V_USERINFO b on a.USERID = b.USERID where b.DEPTNAME is not null and a.INOUT = 0 and
                            a.CREATEDATE >= to_date('{0}', 'yyyy-MM-dd') and a.CREATEDATE <= to_date('{1}', 'yyyy-MM-dd')
                            and(case when(b.ISEPIBOLY = '否' and b.DEPTTYPE is null and length(b.deptcode) > 20) then(select fullname from base_department d where d.deptcode = substr(b.deptcode, 1, 20)) 
							else b.DEPTNAME end) = (select case when v.nature = '班组' then v.parentname else v.DEPTNAME end as bmname from v_userinfo v where v.USERID = '{2}')"                            , sTime, eTime, userId);
                        DataTable dt     = operticketmanagerbll.GetDataTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            dr["bmname"] = dr["bmname"] + "(进门总次数:" + dt.Rows[0]["num"].ToString();
                        }
                        string    sql2 = string.Format(@"select COUNT(a.USERID) as num from(select DISTINCT userid, inout, devicename, CREATEDATE from bis_hikinoutlog) a
                              left join V_USERINFO b on a.USERID = b.USERID where b.DEPTNAME is not null and a.INOUT = 1 and
                            a.CREATEDATE >= to_date('{0}', 'yyyy-MM-dd') and a.CREATEDATE <= to_date('{1}', 'yyyy-MM-dd')
                            and(case when(b.ISEPIBOLY = '否' and b.DEPTTYPE is null and length(b.deptcode) > 20) then(select fullname from base_department d where d.deptcode = substr(b.deptcode, 1, 20)) 
							else b.DEPTNAME end) = (select case when v.nature = '班组' then v.parentname else v.DEPTNAME end as bmname from v_userinfo v where v.USERID = '{2}')"                            , sTime, eTime, userId);
                        DataTable dt2  = operticketmanagerbll.GetDataTable(sql2);
                        if (dt2.Rows.Count > 0)
                        {
                            dr["bmname"] = dr["bmname"] + "出门总次数:" + dt2.Rows[0]["num"].ToString() + ")";
                        }
                    }
                }

                //设置导出格式
                //ExcelConfig excelconfig = new ExcelConfig();
                //excelconfig.Title = "人员进出门禁数据信息";
                //excelconfig.TitleFont = "微软雅黑";
                //excelconfig.TitlePoint = 25;
                //excelconfig.FileName = "人员进出门禁数据导出.xls";
                //excelconfig.IsAllSizeColumn = true;
                ////每一列的设置,没有设置的列信息,系统将按datatable中的列名导出
                //List<ColumnEntity> listColumnEntity = new List<ColumnEntity>();
                //excelconfig.ColumnEntity = listColumnEntity;
                //ColumnEntity columnentity = new ColumnEntity();
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "bmname".ToLower(), ExcelColumn = "单位(部门)" });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "realname".ToLower(), ExcelColumn = "姓名" });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dutyname".ToLower(), ExcelColumn = "岗位名称" });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "intnum".ToLower(), ExcelColumn = "进门次数(次)" });
                //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "outnum".ToLower(), ExcelColumn = "出门次数(次)" });
                ////调用导出方法
                //ExcelHelper.ExcelDownload(data, excelconfig);


                //导出excel
                string       title    = "人员进出门禁数据信息";
                HSSFWorkbook workbook = new HSSFWorkbook();//创建Workbook对象
                HSSFSheet    sheet    = workbook.CreateSheet("Sheet1") as HSSFSheet;
                sheet.DefaultRowHeight = 24 * 20;
                int column   = data.Columns.Count;
                int indexRow = 0;

                //标题
                if (!string.IsNullOrEmpty(title))
                {
                    IRow headerRow = sheet.CreateRow(indexRow);
                    headerRow.HeightInPoints = 30;
                    headerRow.CreateCell(0).SetCellValue(title);

                    //合并单元格
                    CellRangeAddress region = new CellRangeAddress(0, 0, 0, 4);
                    sheet.AddMergedRegion(region);

                    ICellStyle cellstyle = workbook.CreateCellStyle();
                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
                    cellstyle.Alignment         = HorizontalAlignment.Center;


                    IFont font = workbook.CreateFont();
                    font.FontHeightInPoints = 25;
                    font.FontName           = "微软雅黑";
                    font.Boldweight         = (short)FontBoldWeight.Bold;
                    cellstyle.SetFont(font);

                    var cell = sheet.GetRow(0).GetCell(0);
                    cell.CellStyle = cellstyle;

                    HSSFRegionUtil.SetBorderBottom(BorderStyle.Thin, region, sheet, workbook); //下边框
                    HSSFRegionUtil.SetBorderLeft(BorderStyle.Thin, region, sheet, workbook);   //左边框
                    HSSFRegionUtil.SetBorderRight(BorderStyle.Thin, region, sheet, workbook);  //右边框
                    HSSFRegionUtil.SetBorderTop(BorderStyle.Thin, region, sheet, workbook);    //上边框
                    indexRow++;
                }

                //列头样式
                ICellStyle headerStyle = workbook.CreateCellStyle();
                headerStyle.Alignment         = HorizontalAlignment.Center;
                headerStyle.VerticalAlignment = VerticalAlignment.Center;
                headerStyle.BorderBottom      = BorderStyle.Thin;
                headerStyle.BorderLeft        = BorderStyle.Thin;
                headerStyle.BorderRight       = BorderStyle.Thin;
                headerStyle.BorderTop         = BorderStyle.Thin;

                IFont headerFont = workbook.CreateFont();
                //headerFont.FontHeightInPoints = 4;
                headerFont.FontName   = "宋体";
                headerFont.Boldweight = (short)FontBoldWeight.Bold;
                headerStyle.SetFont(headerFont);

                IRow row1 = sheet.CreateRow(indexRow);
                row1.CreateCell(0).SetCellValue("单位(部门)");
                row1.GetCell(0).CellStyle = headerStyle;
                row1.CreateCell(1).SetCellValue("姓名");
                row1.GetCell(1).CellStyle = headerStyle;
                row1.CreateCell(2).SetCellValue("岗位名称");
                row1.GetCell(2).CellStyle = headerStyle;
                row1.CreateCell(3).SetCellValue("进门次数(次)");
                row1.GetCell(3).CellStyle = headerStyle;
                row1.CreateCell(4).SetCellValue("出门次数(次)");
                row1.GetCell(4).CellStyle = headerStyle;

                //普通单元格样式
                ICellStyle bodyStyle = workbook.CreateCellStyle();
                bodyStyle.Alignment         = HorizontalAlignment.Center;
                bodyStyle.VerticalAlignment = VerticalAlignment.Center;
                IFont font1 = workbook.CreateFont();
                font1.Color = HSSFColor.Black.Index;
                //font1.Boldweight = 25;
                //font1.FontHeightInPoints = 12;
                bodyStyle.FillForegroundColor = HSSFColor.White.Index;
                bodyStyle.SetFont(font1);
                //设置格式
                IDataFormat format = workbook.CreateDataFormat();


                //填充数据
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    indexRow++;
                    IRow rowTemp = sheet.CreateRow(indexRow);
                    //rowTemp.Height = 62 * 20;
                    rowTemp.CreateCell(0).SetCellValue(data.Rows[i]["bmname"].ToString());
                    rowTemp.CreateCell(1).SetCellValue(data.Rows[i]["realname"].ToString());
                    rowTemp.CreateCell(2).SetCellValue(data.Rows[i]["dutyname"].ToString());
                    rowTemp.CreateCell(3).SetCellValue(data.Rows[i]["intnum"].ToString());
                    rowTemp.CreateCell(4).SetCellValue(data.Rows[i]["outnum"].ToString());

                    rowTemp.GetCell(0).CellStyle = bodyStyle;
                    rowTemp.GetCell(1).CellStyle = bodyStyle;
                    rowTemp.GetCell(2).CellStyle = bodyStyle;
                    rowTemp.GetCell(3).CellStyle = bodyStyle;
                    rowTemp.GetCell(4).CellStyle = bodyStyle;
                }
                sheet.AutoSizeColumn(0);
                sheet.AutoSizeColumn(1);
                sheet.AutoSizeColumn(2);
                sheet.AutoSizeColumn(3);
                sheet.AutoSizeColumn(4);
                //合并单元格
                MergeCells(sheet, data, 0, 0, 0);
                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);

                return(File(ms, "application/vnd.ms-excel", title + ".xls"));
            }
            catch (Exception ex) {
            }

            return(Success("导出成功。"));
        }
        public ActionResult ExportData(string state)
        {
            try {
                var    curuser = OperatorProvider.Provider.Current();
                string sql     = @"select case when b.NATURE = '班组' then b.PARENTNAME else b.DEPTNAME END as DEPTNAME,ID,a.userid,b.REALNAME,b.gender,b.dutyname,a.devicename,TO_CHAR(a.CREATEDATE,'yyyy-mm-dd hh24:mi:ss') as datetime,case when (length(b.deptcode)>20) then (select d.SORTCODE from base_department d where d.deptcode = substr(b.deptcode,1,20)) else b.DEPTSORT end as DEPTSORTss from 
                        bis_hikinoutlog a left join V_USERINFO b on a.userid = b.userid left join(select* from HJB_PERSONSET where MODULETYPE = 0) t on a.userid = t.userid
                        where REALNAME is not NULL and a.inout = 0 and not exists(select 1 from bis_hikinoutlog d where d.userid = a.userid and d.CREATEDATE + 0 > a.CREATEDATE + 0)
                        ";
                //判断当前登陆用户是什么级别
                if (!curuser.RoleName.IsEmpty())
                {
                    string RoleName = curuser.RoleName.ToString();
                    if (ViewBag.IsAppointAccount != 1)
                    {
                        if (RoleName.Contains("承包商级用户"))
                        {
                            //承包商级用户只可查看本单位门禁数据
                            sql += string.Format(" and (t.ISREFER is NULL or t.userid = '{0}')", curuser.UserId);
                            sql += string.Format(@" and b.ROLENAME like '%{0}%' and b.DEPTNAME = (select case when a.nature = '班组' then a.parentname else a.DEPTNAME end as bmname 
                                                from v_userinfo a where a.USERID = '{1}')", RoleName, curuser.UserId);
                        }
                    }
                    else if (RoleName.Contains("厂级部门用户") || RoleName.Contains("安全管理员") || RoleName.Contains("公司领导") || RoleName.Contains("公司管理员") || RoleName.Contains("公司级用户") || RoleName.Contains("超级管理员") || curuser.UserId.Contains("1521c21a-62c9-4aa1-9093-a8bda503ea89"))
                    {
                        //此级别的用户可查看所有数据
                    }
                    else
                    {
                        sql += string.Format(" and (t.ISREFER is NULL or t.userid = '{0}')", curuser.UserId);
                        if (state == "0")
                        {
                            sql += string.Format(@" and (b.DEPTNAME = (select case when a.nature = '班组' then a.parentname else a.DEPTNAME end as bmname 
                                                from v_userinfo a where a.USERID = '{0}') or b.PARENTNAME = (select case when a.nature = '班组' then a.parentname else a.DEPTNAME end as bmname 
                                                from v_userinfo a where a.USERID = '{0}'))", curuser.UserId);
                        }
                    }
                }
                if (state == "0")
                {
                    sql += " and DEPTTYPE is NULL ORDER BY DEPTSORTss, b.deptsort,b.DEPTCODE,b.userid desc";
                }
                else
                {
                    sql += " and DEPTTYPE is not NULL ORDER BY DEPTTYPE,DEPTSORTss,b.deptsort,b.DEPTCODE,b.userid desc";
                }

                DataTable data = operticketmanagerbll.GetDataTable(sql);

                //导出excel
                string       title    = "在厂人员统计信息";
                HSSFWorkbook workbook = new HSSFWorkbook();//创建Workbook对象
                HSSFSheet    sheet    = workbook.CreateSheet("Sheet1") as HSSFSheet;
                sheet.DefaultRowHeight = 24 * 20;
                int column   = data.Columns.Count;
                int indexRow = 0;

                //标题
                if (!string.IsNullOrEmpty(title))
                {
                    IRow headerRow = sheet.CreateRow(indexRow);
                    headerRow.HeightInPoints = 30;
                    headerRow.CreateCell(0).SetCellValue(title);

                    //合并单元格
                    CellRangeAddress region = new CellRangeAddress(0, 0, 0, 5);
                    sheet.AddMergedRegion(region);

                    ICellStyle cellstyle = workbook.CreateCellStyle();
                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
                    cellstyle.Alignment         = HorizontalAlignment.Center;

                    IFont font = workbook.CreateFont();
                    font.FontHeightInPoints = 25;
                    font.FontName           = "微软雅黑";
                    font.Boldweight         = (short)FontBoldWeight.Bold;
                    cellstyle.SetFont(font);

                    var cell = sheet.GetRow(0).GetCell(0);
                    cell.CellStyle = cellstyle;

                    HSSFRegionUtil.SetBorderBottom(BorderStyle.Thin, region, sheet, workbook); //下边框
                    HSSFRegionUtil.SetBorderLeft(BorderStyle.Thin, region, sheet, workbook);   //左边框
                    HSSFRegionUtil.SetBorderRight(BorderStyle.Thin, region, sheet, workbook);  //右边框
                    HSSFRegionUtil.SetBorderTop(BorderStyle.Thin, region, sheet, workbook);    //上边框
                    indexRow++;
                }

                //列头样式
                ICellStyle headerStyle = workbook.CreateCellStyle();
                headerStyle.Alignment         = HorizontalAlignment.Center;
                headerStyle.VerticalAlignment = VerticalAlignment.Center;
                headerStyle.BorderBottom      = BorderStyle.Thin;
                headerStyle.BorderLeft        = BorderStyle.Thin;
                headerStyle.BorderRight       = BorderStyle.Thin;
                headerStyle.BorderTop         = BorderStyle.Thin;

                IFont headerFont = workbook.CreateFont();
                //headerFont.FontHeightInPoints = 4;
                headerFont.FontName   = "宋体";
                headerFont.Boldweight = (short)FontBoldWeight.Bold;
                headerStyle.SetFont(headerFont);

                IRow row1 = sheet.CreateRow(indexRow);
                row1.CreateCell(0).SetCellValue("部门名称");
                row1.GetCell(0).CellStyle = headerStyle;
                row1.CreateCell(1).SetCellValue("姓名");
                row1.GetCell(1).CellStyle = headerStyle;
                row1.CreateCell(2).SetCellValue("性别");
                row1.GetCell(2).CellStyle = headerStyle;
                row1.CreateCell(3).SetCellValue("岗位名称");
                row1.GetCell(3).CellStyle = headerStyle;
                row1.CreateCell(4).SetCellValue("门禁通道名称");
                row1.GetCell(4).CellStyle = headerStyle;
                row1.CreateCell(5).SetCellValue("进厂时间");
                row1.GetCell(5).CellStyle = headerStyle;

                //普通单元格样式
                ICellStyle bodyStyle = workbook.CreateCellStyle();
                bodyStyle.Alignment         = HorizontalAlignment.Center;
                bodyStyle.VerticalAlignment = VerticalAlignment.Center;
                IFont font1 = workbook.CreateFont();
                font1.Color = HSSFColor.Black.Index;
                //font1.Boldweight = 25;
                //font1.FontHeightInPoints = 12;
                bodyStyle.FillForegroundColor = HSSFColor.White.Index;
                bodyStyle.SetFont(font1);
                //设置格式
                IDataFormat format = workbook.CreateDataFormat();


                //填充数据
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    indexRow++;
                    IRow rowTemp = sheet.CreateRow(indexRow);
                    //rowTemp.Height = 62 * 20;
                    rowTemp.CreateCell(0).SetCellValue(data.Rows[i]["deptname"].ToString());
                    rowTemp.CreateCell(1).SetCellValue(data.Rows[i]["realname"].ToString());
                    rowTemp.CreateCell(2).SetCellValue(data.Rows[i]["gender"].ToString());
                    rowTemp.CreateCell(3).SetCellValue(data.Rows[i]["dutyname"].ToString());
                    rowTemp.CreateCell(4).SetCellValue(data.Rows[i]["devicename"].ToString());
                    rowTemp.CreateCell(5).SetCellValue(data.Rows[i]["datetime"].ToString());

                    rowTemp.GetCell(0).CellStyle = bodyStyle;
                    rowTemp.GetCell(1).CellStyle = bodyStyle;
                    rowTemp.GetCell(2).CellStyle = bodyStyle;
                    rowTemp.GetCell(3).CellStyle = bodyStyle;
                    rowTemp.GetCell(4).CellStyle = bodyStyle;
                    rowTemp.GetCell(5).CellStyle = bodyStyle;
                }
                sheet.AutoSizeColumn(0);
                sheet.AutoSizeColumn(1);
                sheet.AutoSizeColumn(2);
                sheet.AutoSizeColumn(3);
                sheet.AutoSizeColumn(4);
                sheet.AutoSizeColumn(5);
                //合并单元格
                MergeCells(sheet, data, 0, 0, 0);
                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);

                return(File(ms, "application/vnd.ms-excel", title + ".xls"));
            }
            catch (Exception ex) {
            }
            return(Success("导出成功。"));
            //设置导出格式
            //ExcelConfig excelconfig = new ExcelConfig();
            //excelconfig.Title = (state == "0" ? "内部" : "外部") + "人员统计信息";
            //excelconfig.TitleFont = "微软雅黑";
            //excelconfig.TitlePoint = 25;
            //excelconfig.FileName = "实时在厂人员统计导出.xls";
            //excelconfig.IsAllSizeColumn = true;
            ////每一列的设置,没有设置的列信息,系统将按datatable中的列名导出
            //List<ColumnEntity> listColumnEntity = new List<ColumnEntity>();
            //excelconfig.ColumnEntity = listColumnEntity;
            //ColumnEntity columnentity = new ColumnEntity();
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "deptname".ToLower(), ExcelColumn = "部门名称" });
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "realname".ToLower(), ExcelColumn = "姓名" });
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "gender".ToLower(), ExcelColumn = "性别" });
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "dutyname".ToLower(), ExcelColumn = "岗位名称" });
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "devicename".ToLower(), ExcelColumn = "门禁通道名称" });
            //excelconfig.ColumnEntity.Add(new ColumnEntity() { Column = "datetime".ToLower(), ExcelColumn = "进厂时间" });
            ////调用导出方法
            //ExcelHelper.ExcelDownload(data, excelconfig);
        }
        public ActionResult ExportData(string queryJson)
        {
            try
            {
                Pagination pagination = new Pagination();
                pagination.page          = 1;
                pagination.rows          = 1000000000;
                pagination.p_kid         = "u.USERID";
                pagination.p_fields      = @"  
            u.DEPARTMENTID,u.DEPARTMENTCODE, u.REALNAME,u.DUTYID,u.DUTYNAME,u.depttype,
case when u.nature = '班组' then u.parentname else u.DEPTNAME end FULLNAME,
COUNT(u.USERID) OVER(partition by case when u.nature = '班组' then u.parentname else u.DEPTNAME end) AS personcount,
  case when(length(u.deptcode) > 20) then(select d.SORTCODE from base_department d where d.deptcode = substr(u.deptcode, 1, 20)) else u.DEPTSORT end as DEPTSORTss ";
                pagination.p_tablename   = @" V_USERINFO u
            left JOIN BIS_HIKINOUTLOG bh on bh.USERID = u.USERID   ";
                pagination.conditionJson = @" u.DEPARTMENTID not in ('0')  AND  TO_CHAR(bh.CREATEDATE, 'yyyy-MM-dd') is NULL 
								AND u.USERID not in (SELECT USERID FROM HJB_PERSONSET WHERE MODULETYPE=3) "                                ;
                Operator  user        = ERCHTMS.Code.OperatorProvider.Provider.Current();
                DataTable exportTable = hikinoutlogbll.GetAbsenteeismPageList(pagination, queryJson);

                //导出excel
                string       title    = "连续缺勤统计";
                HSSFWorkbook workbook = new HSSFWorkbook();//创建Workbook对象
                HSSFSheet    sheet    = workbook.CreateSheet("Sheet1") as HSSFSheet;
                sheet.DefaultRowHeight = 30 * 20;
                int column   = exportTable.Columns.Count;
                int indexRow = 0;

                //标题
                if (!string.IsNullOrEmpty(title))
                {
                    IRow headerRow = sheet.CreateRow(indexRow);

                    headerRow.CreateCell(0).SetCellValue(title);

                    //合并单元格
                    CellRangeAddress region = new CellRangeAddress(0, 0, 0, 2);
                    sheet.AddMergedRegion(region);

                    ICellStyle cellstyle = workbook.CreateCellStyle();
                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
                    cellstyle.Alignment         = HorizontalAlignment.Center;

                    IFont font = workbook.CreateFont();
                    font.FontHeightInPoints = 22;
                    font.FontName           = "宋体";
                    font.Boldweight         = (short)FontBoldWeight.Bold;
                    cellstyle.SetFont(font);

                    var cell = sheet.GetRow(0).GetCell(0);
                    cell.CellStyle = cellstyle;

                    HSSFRegionUtil.SetBorderBottom(BorderStyle.Thin, region, sheet, workbook); //下边框
                    HSSFRegionUtil.SetBorderLeft(BorderStyle.Thin, region, sheet, workbook);   //左边框
                    HSSFRegionUtil.SetBorderRight(BorderStyle.Thin, region, sheet, workbook);  //右边框
                    HSSFRegionUtil.SetBorderTop(BorderStyle.Thin, region, sheet, workbook);    //上边框
                    indexRow++;
                }

                //列头样式
                ICellStyle headerStyle = workbook.CreateCellStyle();
                headerStyle.Alignment         = HorizontalAlignment.Center;
                headerStyle.VerticalAlignment = VerticalAlignment.Center;
                headerStyle.BorderBottom      = BorderStyle.Thin;
                headerStyle.BorderLeft        = BorderStyle.Thin;
                headerStyle.BorderRight       = BorderStyle.Thin;
                headerStyle.BorderTop         = BorderStyle.Thin;

                IFont headerFont = workbook.CreateFont();
                headerFont.FontHeightInPoints = 16;
                headerFont.FontName           = "宋体";
                headerFont.Boldweight         = (short)FontBoldWeight.Bold;
                headerStyle.SetFont(headerFont);

                IRow row1 = sheet.CreateRow(indexRow);
                row1.CreateCell(0).SetCellValue("单位名称");
                row1.GetCell(0).CellStyle = headerStyle;
                row1.CreateCell(1).SetCellValue("姓名");
                row1.GetCell(1).CellStyle = headerStyle;
                row1.CreateCell(2).SetCellValue("岗位名称");
                row1.GetCell(2).CellStyle = headerStyle;

                //普通单元格样式
                ICellStyle bodyStyle = workbook.CreateCellStyle();
                bodyStyle.Alignment         = HorizontalAlignment.Center;
                bodyStyle.VerticalAlignment = VerticalAlignment.Center;
                IFont font1 = workbook.CreateFont();
                font1.Color                   = HSSFColor.Black.Index;
                font1.Boldweight              = 25;
                font1.FontHeightInPoints      = 12;
                bodyStyle.FillForegroundColor = HSSFColor.White.Index;
                bodyStyle.SetFont(font1);
                //设置格式
                IDataFormat format = workbook.CreateDataFormat();

                //填充数据
                for (int i = 0; i < exportTable.Rows.Count; i++)
                {
                    indexRow++;
                    IRow rowTemp = sheet.CreateRow(indexRow);
                    rowTemp.Height = 62 * 20;
                    rowTemp.CreateCell(0).SetCellValue(exportTable.Rows[i]["fullname"].ToString() + "(" + exportTable.Rows[i]["personcount"].ToString() + ")");
                    rowTemp.CreateCell(1).SetCellValue(exportTable.Rows[i]["realname"].ToString());
                    rowTemp.CreateCell(2).SetCellValue(exportTable.Rows[i]["dutyname"].ToString());

                    rowTemp.GetCell(0).CellStyle = bodyStyle;
                    rowTemp.GetCell(1).CellStyle = bodyStyle;
                    rowTemp.GetCell(2).CellStyle = bodyStyle;
                }
                sheet.AutoSizeColumn(0);
                sheet.AutoSizeColumn(1);
                sheet.AutoSizeColumn(2);
                //合并单元格
                MergeCells(sheet, exportTable, 0, 0, 0);

                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);

                return(File(ms, "application/vnd.ms-excel", title + ".xls"));
            }
            catch (Exception ex)
            {
            }
            return(Success("导出成功。"));
        }