public string generateExcelEmpleado(DateTime fecha_ini, DateTime fecha_fin)
        {
            var font = new ReporteEncuestaExcel();
            String[] month = {"","ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"};
            var anioEvaluacion = new ReporteEncuestaDB().consultReportEmpleado(fecha_ini,fecha_fin,1);
            if (anioEvaluacion.Count == 0)
                return string.Empty;
            var sheet = book.CreateSheet("Reporte lista colaboradores");

            var rHeader = sheet.CreateRow(1);
            ICell cHeader;
            var cellMerge = 2;

            cHeader = rHeader.CreateCell(1);
            sheet.AddMergedRegion(new CellRangeAddress(1, 2, 1, 1));
            cHeader.SetCellValue("APELLIDOS Y NOMBRES");
            cHeader.CellStyle = font.setFontText(12, true, book);
            cHeader.CellStyle.WrapText = true;
            sheet.SetColumnWidth(1, 8000);

            for (int i = 0; i < anioEvaluacion.Count; i++)
            {
                cHeader = rHeader.CreateCell(i+2);
                if (anioEvaluacion[i].mes_evaluacion > 1)
                    sheet.AddMergedRegion(new CellRangeAddress(1, 1, cellMerge, anioEvaluacion[i].mes_evaluacion + cellMerge));
                cHeader.SetCellValue(anioEvaluacion[i].anio_evaluacion);
                cHeader.CellStyle = font.setFontText(12, true, book);
                cHeader.CellStyle.WrapText = true;
                cellMerge += anioEvaluacion[i].mes_evaluacion;
            }

            var mesEvaluacion = new ReporteEncuestaDB().consultReportEmpleado(fecha_ini, fecha_fin, 2);
            var rMonth = sheet.CreateRow(2);
            ICell cMonth;
            for (int i = 0; i < mesEvaluacion.Count; i++)
            {
                cMonth = rMonth.CreateCell(2+i);
                cMonth.SetCellValue(month[mesEvaluacion[i].mes_evaluacion]);
                cMonth.CellStyle = font.setFontText(12, true, book);
                sheet.SetColumnWidth(2 + i, 4000);
            }

            var datoEmpleado = new ReporteEncuestaDB().consultReportEmpleado(fecha_ini, fecha_fin, 3);
            var encuestaPuntaje = new ReporteEncuestaDB().consultReportEmpleado(fecha_ini, fecha_fin, 4);
            IRow rNombres;
            for (int i = 0; i < datoEmpleado.Count; i++)
            {
                rNombres = sheet.CreateRow(3+i);
                ICell cNombres = rNombres.CreateCell(1);
                cNombres.SetCellValue(datoEmpleado[i].nombres);
                cNombres.CellStyle = font.setFontText(12, false, book);
                var columnIndex = 2;
                for (int a = 0; a < anioEvaluacion.Count; a++)
                {
                    var listPuntaje = encuestaPuntaje.FindAll(an => an.anio_evaluacion == anioEvaluacion[a].anio_evaluacion && an.id_empleado == datoEmpleado[i].id_empleado);
                    if (listPuntaje.Count > 0)
                    {
                        var m = 0;
                        while (m < listPuntaje.Count)
                        {
                            ICell cPuntaje = rNombres.CreateCell(columnIndex);
                            cPuntaje.SetCellValue(listPuntaje[m].puntaje);
                            cPuntaje.CellStyle = font.setFontText(10, false, book);
                            columnIndex++;
                            m++;
                        }
                    }
                    else
                        columnIndex++;
                }
            }
            var guide = "Reporte_consolidado_" + DateTime.Now.ToString("yyyyMMddHHmmss");
            using (var file = new FileStream(@HttpContext.Current.Server.MapPath("~/Utils/xlsxs/") + guide.ToString() + ".xlsx", FileMode.Create, FileAccess.ReadWrite))
            {
                book.Write(file);
                file.Close();
            }
            return guide.ToString();
        }
        public String exportExcel(List<asistenciaReport> o)
        {
            var font = new ReporteEncuestaExcel();
            var book = new XSSFWorkbook();
            String[] heads = { "Empresa", "Usuario", "Fecha Asistencia", "Hora Ingreso Est.", "Hora Ingreso Marcado", "IP_Ingreso","Diferencia Ingreso", "Hora Salida Est.", "Hora Salida Marcado","IP_Salida","Diferencia Salida" };
            var sheet = book.CreateSheet("Asistencia_" + System.DateTime.Now.AddHours(-7).ToString("dd-mm-yyyy"));
            var rHeader = sheet.CreateRow(1);
            ICell cHeader;
            for (var i = 0; i < heads.Length; i++)
            {
                cHeader = rHeader.CreateCell(i + 1);
                cHeader.SetCellValue(heads[i]);
                cHeader.CellStyle = font.setFontText(12, true, book);

            }

            //recorrer data
            for (var r = 0; r < o.Count; r++)
            {
                IRow rBody = sheet.CreateRow(r + 2);
                ICell cbody;

                cbody = rBody.CreateCell(1);
                cbody.SetCellValue(o[r].razon_social);
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(2);
                cbody.SetCellValue(o[r].usuario);
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(3);
                cbody.SetCellValue(o[r].fecha_asistencia.ToShortDateString());
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(4);
                cbody.SetCellValue(o[r].hora_ingresoS.ToString());
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(5);
                cbody.SetCellValue(o[r].hora_ingreso.ToString());
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(6);
                cbody.SetCellValue(o[r].ip_ingreso.ToString());
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(7);
                cbody.SetCellValue(this.differenceTime(o[r].hora_ingresoS, o[r].hora_ingreso));
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(8);
                cbody.SetCellValue(o[r].hora_SalidaS);
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(9);
                cbody.SetCellValue(o[r].hora_salida);
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(10);
                cbody.SetCellValue(o[r].ip_salida);
                cbody.CellStyle = font.setFontText(10, false, book);

                cbody = rBody.CreateCell(11);
                cbody.SetCellValue(this.differenceTime(o[r].hora_SalidaS, o[r].hora_salida));
                cbody.CellStyle = font.setFontText(10, false, book);
            }

            var guide = "Reporte_asistencia_" + DateTime.Now.ToString("yyyyMMddHHmmss");
            using (var file = new FileStream(@HttpContext.Current.Server.MapPath("~/Utils/xlsxs/") + guide.ToString() + ".xlsx", FileMode.Create, FileAccess.ReadWrite))
            {
                book.Write(file);
                file.Close();
            }

            return guide.ToString();
        }