private void getControlAbsentismo(int annomes, string sCentros, string sEvaluadores, string sPSN)
    {
        svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
        try
        {
            string sExtension     = "xls";
            string sNombreArchivo = "ControlAbsentismo." + sExtension;

            DataSet ds = null;
            if (HttpContext.Current.Cache.Get("CacheControlAbsentismo_" + HttpContext.Current.Session["IDFICEPI_ENTRADA"].ToString()) == null)
            {
                ds = SUPER.BLL.Profesional.ObtenerControlAbsentismo(annomes, sCentros, sEvaluadores, sPSN);
            }
            else
            {
                ds = (DataSet)HttpContext.Current.Cache.Get("CacheControlAbsentismo_" + HttpContext.Current.Session["IDFICEPI_ENTRADA"].ToString());
            }

            osvcEXCEL      = new svcEXCEL.IsvcEXCELClient();
            ArchivoBinario = osvcEXCEL.getExcelFromDataSet(ds, sExtension);

            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\"");
            Response.BinaryWrite(ArchivoBinario);

            if (Response.IsClientConnected)
            {
                Response.Flush();
            }
        }
        catch (FaultException <svcEXCEL.IBOfficeException> cex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;

            if (cex.InnerException != null)
            {
                this.hdnError.Value += ". InnerException: descripción=" + cex.InnerException.Message;
            }
        }
        catch (Exception ex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: " + ex.ToString();
        }
        finally
        {
            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                {
                    osvcEXCEL.Abort();
                }
            }
        }
    }
    private void getConsProyMasivo()
    {
        svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
        try
        {
            string sExtension     = "xls";
            string sNombreArchivo = "ConsumosProyectoMasivo." + sExtension;

            DataSet ds = (DataSet)HttpContext.Current.Cache.Get("CONSPROYMASIVO_" + Session["IDFICEPI_ENTRADA"].ToString());

            osvcEXCEL      = new svcEXCEL.IsvcEXCELClient();
            ArchivoBinario = osvcEXCEL.getExcelFromDataSet(ds, sExtension);

            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\"");
            Response.BinaryWrite(ArchivoBinario);

            ds.Dispose();
            HttpContext.Current.Cache.Remove("CONSPROYMASIVO_" + Session["IDFICEPI_ENTRADA"].ToString());

            if (Response.IsClientConnected)
            {
                Response.Flush();
            }
        }
        catch (FaultException <svcEXCEL.IBOfficeException> cex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;

            if (cex.InnerException != null)
            {
                this.hdnError.Value += ". InnerException: descripción=" + cex.InnerException.Message;
            }
        }
        catch (Exception ex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: " + ex.ToString();
        }
        finally
        {
            HttpContext.Current.Cache.Remove("CONSPROYMASIVO_" + Session["IDFICEPI_ENTRADA"].ToString());

            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                {
                    osvcEXCEL.Abort();
                }
            }
        }
    }
Exemplo n.º 3
0
    private void getExcel(DataSet ds)
    {
        svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
        try
        {
            string sExtension     = ".xls";
            string sNombreArchivo = "Consulta_Imputaciones_" + Session["IDFICEPI_IAP"].ToString() + sExtension;

            osvcEXCEL      = new svcEXCEL.IsvcEXCELClient();
            ArchivoBinario = osvcEXCEL.getExcelFromDataSet(ds, sExtension);

            Response.ContentType = "application/xlsx; charset=ISO-8859-1";
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\"");
            Response.AddHeader("content-length", Convert.ToString(ArchivoBinario.Length));
            Response.BinaryWrite(ArchivoBinario);

            if (Response.IsClientConnected)
            {
                Response.Flush();
            }
        }
        catch (FaultException <svcEXCEL.IBOfficeException> cex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;

            if (cex.InnerException != null)
            {
                this.hdnError.Value += ". InnerException: descripción=" + cex.InnerException.Message;
            }
        }
        catch (Exception ex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: " + ex.ToString();
        }
        finally
        {
            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                {
                    osvcEXCEL.Abort();
                }
            }
        }
    }
    private void getConsultaPersonalizada(string sParametros)
    {
        svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
        try
        {
            string   sExtension = "xls";
            string[] aParam     = Regex.Split(sParametros, "@#@");
            //string sNombreArchivo = SUPER.Capa_Negocio.Utilidades.unescape(aParam[0]) + "_" + DateTime.Now.ToString() + "." + sExtension;
            string   sNombreArchivo = aParam[0] + "-" + DateTime.Now.ToString() + "." + sExtension;
            string   sProdAlm       = aParam[1];
            string[] aParametros    = Regex.Split(aParam[2], "///");
            //object[] aObjetos = new object[(sParametros == "") ? 1 : aParametros.Length + 1];
            object[] aObjetos = new object[(aParam[2] == "") ? 1 : aParametros.Length + 1];
            aObjetos[0] = Utilidades.GetUserActual();
            #region Cargo parámetros
            int v = 1;
            foreach (string oParametro in aParametros)
            {
                if (oParametro == "")
                {
                    continue;
                }
                string[] aDatos = Regex.Split(oParametro, "##");
                switch (aDatos[0])
                {
                case "A": aObjetos[v] = int.Parse(aDatos[1]); break;

                case "M": aObjetos[v] = double.Parse(aDatos[1].Replace(".", ",")); break;

                case "B": aObjetos[v] = (aDatos[1] == "1") ? true : false; break;

                default: aObjetos[v] = aDatos[1]; break;
                }
                v++;
            }
            #endregion
            DataSet ds = CONSULTAPERSONAL.EjecutarConsultaDS(sProdAlm, aObjetos);

            osvcEXCEL      = new svcEXCEL.IsvcEXCELClient();
            ArchivoBinario = osvcEXCEL.getExcelFromDataSet(ds, sExtension);

            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + Utilidades.CleanFileName(sNombreArchivo) + "\"");
            Response.BinaryWrite(ArchivoBinario);

            if (Response.IsClientConnected)
            {
                Response.Flush();
            }
        }
        catch (FaultException <svcEXCEL.IBOfficeException> cex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: Código:" + cex.Detail.ErrorCode + ". Descripción: " + cex.Detail.Message;// +" " + cex.Detail.InnerMessage;

            if (cex.InnerException != null)
            {
                this.hdnError.Value += ". InnerException: descripción=" + cex.InnerException.Message;
            }
        }
        catch (Exception ex)
        {
            Response.ContentType = "text/HTML";
            this.hdnError.Value  = "Error: " + ex.ToString();
        }
        finally
        {
            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                {
                    osvcEXCEL.Abort();
                }
            }
        }
    }
        public static byte[] exportarExcel(List <Dictionary <string, string> > schema, List <Dictionary <string, string> > datos, string filename, string tituloExcel)
        {
            try
            {
                byte[] bytearr = null;

                DataTable dtHead = new DataTable();
                dtHead.TableName = "HEAD-datos";
                DataColumn dtc = new DataColumn("clave");
                dtHead.Columns.Add(dtc);
                dtc = new DataColumn("valor");
                dtHead.Columns.Add(dtc);

                DataRow oRow = dtHead.NewRow();
                oRow[0] = "title";
                oRow[1] = tituloExcel;
                dtHead.Rows.InsertAt(oRow, 0);

                DataTable dtBody = new DataTable();
                dtBody.TableName = "BODY-datos";
                dtc = null;

                for (var i = 0; i < schema.Count; i++)
                {
                    dtc = new DataColumn(schema[i]["data-text"], Type.GetType("System." + schema[i]["data-type"]));
                    dtBody.Columns.Add(dtc);
                }

                DataRow oRowFila;

                for (var j = 0; j < datos.Count; j++)
                {
                    oRowFila = dtBody.NewRow();

                    for (var k = 0; k < datos[j].Count; k++)
                    {
                        if (datos[j].Values.ElementAt(k) != null)
                        {
                            switch (schema[k]["data-type"])
                            {
                            case "Double":
                                oRowFila[k] = Math.Round(double.Parse(datos[j].Values.ElementAt(k), CultureInfo.InvariantCulture), 2);
                                break;

                            case "DateTime":
                                string [] arr = datos[j].Values.ElementAt(k).Split('/');
                                oRowFila[k] = new DateTime(Convert.ToInt32(arr[2]), Convert.ToInt32(arr[1]), Convert.ToInt32(arr[0]));
                                break;

                            default:
                                oRowFila[k] = datos[j].Values.ElementAt(k);
                                break;
                            }
                        }
                    }

                    dtBody.Rows.Add(oRowFila);
                }

                //Si no hay filas devolver null,
                if (dtBody.Rows.Count == 0)
                {
                    return(bytearr);
                }

                DataSet ds = new DataSet();
                ds.Tables.Add(dtHead);
                ds.Tables.Add(dtBody);

                //Llamada al ibservioffice para obtener el excel
                svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
                try
                {
                    osvcEXCEL = new svcEXCEL.IsvcEXCELClient();
                    return(osvcEXCEL.getExcelFromDataSet(ds, filename));
                }
                catch (FaultException <svcEXCEL.IBOfficeException> cex)
                {
                    throw new Exception(cex.Detail.Message);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                    {
                        if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                        {
                            osvcEXCEL.Close();
                        }
                        else
                        {
                            osvcEXCEL.Abort();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                IB.SUPER.Shared.LogError.LogearError("Error al exportar a excel", ex);
                throw new Exception(System.Uri.EscapeDataString("Error al exportar a excel"));
            }
        }
        public byte[] ExportarExcel(string exportid, string origenMenu, string filters)
        {
            //El 15/06/2018 María nos pide que quitemos las lineas de cabecera del Excel para facilitar la creación de tablas dinámicas
            byte[]    bytearr  = null;
            DataTable dtBody   = null;
            DataTable dtHead   = null;
            string    filename = "";
            bool      admin    = origenMenu == "ADM" ? true : false;
            Hashtable ht       = Shared.Utils.ParseQuerystringFilters(filters);


            OpenDbConn();

            DAL.Exportaciones cExport = new DAL.Exportaciones(cDblib);

            switch (exportid)
            {
                #region Acciones
            case "acciones":
                //Obtener datatable de bbdd
                Models.ExportAccionesFilter o = new Models.ExportAccionesFilter();
                if (ht["estado"] != null)
                {
                    o.estado = ht["estado"].ToString();
                }
                if (ht["itemorigen"] != null)
                {
                    o.itemorigen = ht["itemorigen"].ToString();
                }
                if (ht["iditemorigen"] != null)
                {
                    o.iditemorigen = ht["iditemorigen"].ToString();
                }
                if (ht["importeDesde"] != null)
                {
                    o.importeDesde = ht["importeDesde"].ToString();
                }
                if (ht["importeHasta"] != null)
                {
                    o.importeHasta = ht["importeHasta"].ToString();
                }
                if (ht["ffinDesde"] != null)
                {
                    o.ffinDesde = ht["ffinDesde"].ToString();
                }
                if (ht["ffinHasta"] != null)
                {
                    o.ffinHasta = ht["ffinHasta"].ToString();
                }
                if (ht["promotor"] != null)
                {
                    o.promotor = ht["promotor"].ToString();
                }
                if (ht["comercial"] != null)
                {
                    o.comercial = ht["comercial"].ToString();
                }
                if (ht["lideres"] != null)
                {
                    o.lideres = obtenerListaIds(ht["lideres"].ToString());
                }
                if (ht["clientes"] != null)
                {
                    o.clientes = obtenerListaIds(ht["clientes"].ToString());
                }
                if (ht["acciones"] != null)
                {
                    o.acciones = obtenerListaIds(ht["acciones"].ToString());
                }
                if (ht["unidades"] != null)
                {
                    o.unidades = obtenerListaIds(ht["unidades"].ToString());
                }
                if (ht["areas"] != null)
                {
                    o.areas = obtenerListaIds(ht["areas"].ToString());
                }
                if (ht["subareas"] != null)
                {
                    o.subareas = obtenerListaIds(ht["subareas"].ToString());
                }

                dtBody = cExport.Acciones(admin, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"], o);

                //Si no hay filas devolver null,
                if (dtBody.Rows.Count == 0)
                {
                    return(bytearr);
                }

                //dtBody.TableName = "BODY-export";
                dtBody.TableName = "Acciones";
                //dtHead = ObtenerDatatableHEAD("HEAD-export", "Acciones preventa");

                filename = "acciones.xlsx";

                break;
                #endregion
                #region accionesMiAmbito
                //case "accionesMiAmbito":
                //    //Obtener datatable de bbdd
                //    Models.ExportAccionesFilter oAV = new Models.ExportAccionesFilter();
                //    if (ht["estado"] != null) oAV.estado = ht["estado"].ToString();
                //    //if (ht["itemorigen"] != null) oAV.itemorigen = ht["itemorigen"].ToString();
                //    //if (ht["iditemorigen"] != null) oAV.iditemorigen = ht["iditemorigen"].ToString();
                //    if (ht["importeDesde"] != null) oAV.importeDesde = ht["importeDesde"].ToString();
                //    if (ht["importeHasta"] != null) oAV.importeHasta = ht["importeHasta"].ToString();
                //    if (ht["ffinDesde"] != null) oAV.ffinDesde = ht["ffinDesde"].ToString();
                //    if (ht["ffinHasta"] != null) oAV.ffinHasta = ht["ffinHasta"].ToString();
                //    if (ht["promotor"] != null) oAV.promotor = ht["promotor"].ToString();
                //    if (ht["comercial"] != null) oAV.comercial = ht["comercial"].ToString();
                //    if (ht["lideres"] != null) oAV.lideres = obtenerListaIds(ht["lideres"].ToString());
                //    if (ht["clientes"] != null) oAV.clientes = obtenerListaIds(ht["clientes"].ToString());
                //    if (ht["acciones"] != null) oAV.acciones = obtenerListaIds(ht["acciones"].ToString());
                //    if (ht["unidades"] != null) oAV.unidades = obtenerListaIds(ht["unidades"].ToString());
                //    if (ht["areas"] != null) oAV.areas = obtenerListaIds(ht["areas"].ToString());
                //    if (ht["subareas"] != null) oAV.subareas = obtenerListaIds(ht["subareas"].ToString());

                //    dtBody = cExport.AccionesMiVision(admin, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"], oAV);

                //    //Eliminar las columnas no necesarias
                //    ArrayList arl = new ArrayList();
                //    foreach (DataColumn c in dtBody.Columns)
                //    {
                //        if (c.ColumnName.ToLower().Trim() != "ta204_idaccionpreventa"
                //            && c.ColumnName.ToLower().Trim() != "tipoAccion"
                //            && c.ColumnName.ToLower().Trim() != "ta206_iditemorigen"
                //            && c.ColumnName.ToLower().Trim() != "importe" && c.ColumnName.ToLower().Trim() != "den_cuenta"
                //            && c.ColumnName.ToLower().Trim() != "promotor" && c.ColumnName.ToLower().Trim() != "comercial"
                //            && c.ColumnName.ToLower().Trim() != "den_unidadcomercial" && c.ColumnName.ToLower().Trim() != "areaPreventa"
                //            && c.ColumnName.ToLower().Trim() != "subareaPreventa" && c.ColumnName.ToLower().Trim() != "lider"
                //            && c.ColumnName.ToLower().Trim() != "estadoorigen" && c.ColumnName.ToLower().Trim() != "ta204_fechacreacion"
                //            && c.ColumnName.ToLower().Trim() != "ta204_fechafinestipulada" && c.ColumnName.ToLower().Trim() != "ta204_fechafinreal"
                //            )
                //        {
                //            arl.Add(c);
                //        }

                //    }
                //    foreach (DataColumn dc in arl)
                //    {
                //        dtBody.Columns.Remove(dc.ColumnName);
                //    }

                //    //Renombar columnas
                //    dtBody.Columns["ta204_idaccionpreventa"].ColumnName = "Referencia";
                //    //dtBody.Columns["tipoAccion"].ColumnName = "Acción preventa";
                //    dtBody.Columns["importe"].ColumnName = "Importe";


                //    //Si no hay filas devolver null,
                //    if (dtBody.Rows.Count == 0) return bytearr;

                //    dtBody.TableName = "BODY-export";
                //    dtHead = ObtenerDatatableHEAD("HEAD-export", "Consulta y acceso a las acciones preventa bajo mi ámbito de visión");

                //    filename = "accionesMiVision.xlsx";

                //    break;
                #endregion
                #region Tareas
            case "tareas":
                //Obtener datatable de bbdd
                Models.ExportTareasFilter p = new Models.ExportTareasFilter();
                if (ht["estado"] != null)
                {
                    p.estado = ht["estado"].ToString();
                }
                if (ht["estado_tarea"] != null)
                {
                    p.estado_tarea = ht["estado_tarea"].ToString();
                }
                if (ht["itemorigen"] != null)
                {
                    p.itemorigen = ht["itemorigen"].ToString();
                }
                if (ht["iditemorigen"] != null)
                {
                    p.iditemorigen = ht["iditemorigen"].ToString();
                }
                if (ht["importeDesde"] != null)
                {
                    p.importeDesde = ht["importeDesde"].ToString();
                }
                if (ht["importeHasta"] != null)
                {
                    p.importeHasta = ht["importeHasta"].ToString();
                }
                if (ht["ffinDesde"] != null)
                {
                    p.ffinDesde = ht["ffinDesde"].ToString();
                }
                if (ht["ffinHasta"] != null)
                {
                    p.ffinHasta = ht["ffinHasta"].ToString();
                }
                if (ht["ffinDesde_tarea"] != null)
                {
                    p.ffinDesde_tarea = ht["ffinDesde_tarea"].ToString();
                }
                if (ht["ffinHasta_tarea"] != null)
                {
                    p.ffinHasta_tarea = ht["ffinHasta_tarea"].ToString();
                }
                if (ht["promotor"] != null)
                {
                    p.promotor = ht["promotor"].ToString();
                }
                if (ht["comercial"] != null)
                {
                    p.comercial = ht["comercial"].ToString();
                }
                if (ht["lideres"] != null)
                {
                    p.lideres = obtenerListaIds(ht["lideres"].ToString());
                }
                if (ht["clientes"] != null)
                {
                    p.clientes = obtenerListaIds(ht["clientes"].ToString());
                }
                if (ht["acciones"] != null)
                {
                    p.acciones = obtenerListaIds(ht["acciones"].ToString());
                }
                if (ht["unidades"] != null)
                {
                    p.unidades = obtenerListaIds(ht["unidades"].ToString());
                }
                if (ht["areas"] != null)
                {
                    p.areas = obtenerListaIds(ht["areas"].ToString());
                }
                if (ht["subareas"] != null)
                {
                    p.subareas = obtenerListaIds(ht["subareas"].ToString());
                }

                dtBody = cExport.Tareas(admin, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"], p);

                //Si no hay filas devolver null,
                if (dtBody.Rows.Count == 0)
                {
                    return(bytearr);
                }

                //dtBody.TableName = "BODY-export";
                dtBody.TableName = "Tareas";
                //dtHead = ObtenerDatatableHEAD("HEAD-export", "Tareas preventa");

                filename = "tareas.xlsx";

                break;

                #endregion
                #region Acciones y Tareas
            case "accionestareas":
                //Obtener datatable de bbdd
                Models.ExportTareasFilter p2 = new Models.ExportTareasFilter();
                if (ht["estado"] != null)
                {
                    p2.estado = ht["estado"].ToString();
                }
                if (ht["estado_tarea"] != null)
                {
                    p2.estado_tarea = ht["estado_tarea"].ToString();
                }
                if (ht["itemorigen"] != null)
                {
                    p2.itemorigen = ht["itemorigen"].ToString();
                }
                if (ht["iditemorigen"] != null)
                {
                    p2.iditemorigen = ht["iditemorigen"].ToString();
                }
                if (ht["importeDesde"] != null)
                {
                    p2.importeDesde = ht["importeDesde"].ToString();
                }
                if (ht["importeHasta"] != null)
                {
                    p2.importeHasta = ht["importeHasta"].ToString();
                }
                if (ht["ffinDesde"] != null)
                {
                    p2.ffinDesde = ht["ffinDesde"].ToString();
                }
                if (ht["ffinHasta"] != null)
                {
                    p2.ffinHasta = ht["ffinHasta"].ToString();
                }
                if (ht["ffinDesde_tarea"] != null)
                {
                    p2.ffinDesde_tarea = ht["ffinDesde_tarea"].ToString();
                }
                if (ht["ffinHasta_tarea"] != null)
                {
                    p2.ffinHasta_tarea = ht["ffinHasta_tarea"].ToString();
                }
                if (ht["promotor"] != null)
                {
                    p2.promotor = ht["promotor"].ToString();
                }
                if (ht["comercial"] != null)
                {
                    p2.comercial = ht["comercial"].ToString();
                }
                if (ht["lideres"] != null)
                {
                    p2.lideres = obtenerListaIds(ht["lideres"].ToString());
                }
                if (ht["clientes"] != null)
                {
                    p2.clientes = obtenerListaIds(ht["clientes"].ToString());
                }
                if (ht["acciones"] != null)
                {
                    p2.acciones = obtenerListaIds(ht["acciones"].ToString());
                }
                if (ht["unidades"] != null)
                {
                    p2.unidades = obtenerListaIds(ht["unidades"].ToString());
                }
                if (ht["areas"] != null)
                {
                    p2.areas = obtenerListaIds(ht["areas"].ToString());
                }
                if (ht["subareas"] != null)
                {
                    p2.subareas = obtenerListaIds(ht["subareas"].ToString());
                }

                dtBody = cExport.AccionesTareas(admin, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"], p2);

                //Si no hay filas devolver null,
                if (dtBody.Rows.Count == 0)
                {
                    return(bytearr);
                }

                //dtBody.TableName = "BODY-export";
                dtBody.TableName = "AccionesTareas";
                //dtHead = ObtenerDatatableHEAD("HEAD-export", "Acciones y tareas preventa");

                filename = "accionestareas.xlsx";

                break;
                #endregion

                #region cargatrabajo
            case "cargatrabajo":
                //Obtener datatable de bbdd
                Models.ExportCargaTrabajoFilter q = new Models.ExportCargaTrabajoFilter();
                if (ht["estado"] != null)
                {
                    q.estado = ht["estado"].ToString();
                }
                if (ht["estado_tarea"] != null)
                {
                    q.estado_tarea = ht["estado_tarea"].ToString();
                }
                if (ht["ffinDesde"] != null)
                {
                    q.ffinDesde = ht["ffinDesde"].ToString();
                }
                if (ht["ffinHasta"] != null)
                {
                    q.ffinHasta = ht["ffinHasta"].ToString();
                }
                if (ht["ffinDesde_tarea"] != null)
                {
                    q.ffinDesde_tarea = ht["ffinDesde_tarea"].ToString();
                }
                if (ht["ffinHasta_tarea"] != null)
                {
                    q.ffinHasta_tarea = ht["ffinHasta_tarea"].ToString();
                }
                if (ht["lideres"] != null)
                {
                    q.lideres = obtenerListaIds(ht["lideres"].ToString());
                }
                if (ht["unidades"] != null)
                {
                    q.unidades = obtenerListaIds(ht["unidades"].ToString());
                }
                if (ht["areas"] != null)
                {
                    q.areas = obtenerListaIds(ht["areas"].ToString());
                }
                if (ht["subareas"] != null)
                {
                    q.subareas = obtenerListaIds(ht["subareas"].ToString());
                }

                dtBody = cExport.CargaTrabajo(admin, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"], q);

                //Si no hay filas devolver null,
                if (dtBody.Rows.Count == 0)
                {
                    return(bytearr);
                }

                //dtBody.TableName = "BODY-export";
                dtBody.TableName = "CargaTrabajo";
                //dtHead = ObtenerDatatableHEAD("HEAD-export", "Carga de trabajo");

                filename = "cargatrabajo.xlsx";

                break;
                #endregion

            default:
                return(bytearr);
            }


            DataSet ds = new DataSet();
            //ds.Tables.Add(dtHead);
            ds.Tables.Add(dtBody);

            //Llamada al ibservioffice para obtener el excel
            svcEXCEL.IsvcEXCELClient osvcEXCEL = null;
            try
            {
                osvcEXCEL = new svcEXCEL.IsvcEXCELClient();
                return(osvcEXCEL.getExcelFromDataSet(ds, filename));
            }
            catch (FaultException <svcEXCEL.IBOfficeException> cex)
            {
                throw new Exception(cex.Detail.Message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
                {
                    if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                    {
                        osvcEXCEL.Close();
                    }
                    else
                    {
                        osvcEXCEL.Abort();
                    }
                }
            }
        }
Exemplo n.º 7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string sExtension = ".xlsx";
        string sFilename  = "";

        byte[]  oExcel   = null;
        string  pantalla = Request.QueryString["pantalla"];
        DataSet ds       = new DataSet();

        Response.ClearContent();
        Response.ClearHeaders();
        Response.Buffer = true;


        svcEXCEL.IsvcEXCELClient osvcEXCEL = new svcEXCEL.IsvcEXCELClient();
        try
        {
            switch (pantalla)
            {
            //Exportación del equipo desde la pantalla de desglose de rol
            case "desgloserol":

                //recuperar parametros del querystring
                int    idficepi         = int.Parse(Request.QueryString["idficepi"]);
                int    parentesco       = int.Parse(Request.QueryString["parentesco"]);
                string idficepitext     = Request.QueryString["idficepitext"];
                string parentescotext   = Request.QueryString["parentescotext"];
                int    numprofesionales = int.Parse(Request.QueryString["numprofesionales"]);

                sFilename = "desglose por rol" + sExtension;

                IB.Progress.BLL.DesgloseRol dRol = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Profesionales por rol";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Evaluador";
                    oRow[1] = idficepitext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Nivel de dependencia";
                    oRow[1] = parentescotext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total profesionales";
                    oRow[1] = numprofesionales;
                    dtH.Rows.Add(oRow);


                    //Datatable de cuerpo
                    List <IB.Progress.Models.DesgloseRol> desgloseRol = null;
                    dRol        = new IB.Progress.BLL.DesgloseRol();
                    desgloseRol = dRol.catalogoDesgloseRol(idficepi, parentesco);
                    dRol.Dispose();

                    //eliminar las filas con profesional = "";
                    desgloseRol = (from o in desgloseRol
                                   where o.Profesional.Length > 0
                                   select o).ToList <IB.Progress.Models.DesgloseRol>();

                    //convertir la lista a datatable
                    DataTable dtbody = desgloseRol.CopyGenericToDataTable <IB.Progress.Models.DesgloseRol>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "desrol" && c.ColumnName.ToLower().Trim() != "profesional")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //renombar columnas
                    dtbody.Columns["desrol"].ColumnName      = "Rol";
                    dtbody.Columns["profesional"].ColumnName = "Profesional";

                    //reordenar columnas
                    dtbody.Columns["Rol"].SetOrdinal(0);
                    dtbody.Columns["Profesional"].SetOrdinal(1);


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);


                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (dRol != null)
                    {
                        dRol.Dispose();
                    }
                }
                break;

            case "solicitudesaprobadas":

                //recuperar parametros del querystring
                int idficepiSolicitudesaprobadas = int.Parse(Request.QueryString["idficepi"]);

                IB.Progress.BLL.TramitacionCambioRol dTramitacion = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Solicitudes aprobadas";
                    dtH.Rows.Add(oRow);

                    //Datatable de cuerpo
                    List <IB.Progress.Models.TramitacionCambioRol> tramit = null;
                    dTramitacion = new IB.Progress.BLL.TramitacionCambioRol();
                    tramit       = dTramitacion.getSolicitudesSegunEstado(Convert.ToChar("P"), idficepiSolicitudesaprobadas);
                    dTramitacion.Dispose();

                    ////convertir la lista a datatable
                    DataTable dtbody = tramit.CopyGenericToDataTable <IB.Progress.Models.TramitacionCambioRol>();
                    dtbody.TableName = "BODY-Excel";


                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "nombre_interesado" && c.ColumnName.ToLower().Trim() != "nombre_promotor" &&
                            c.ColumnName.ToLower().Trim() != "t940_desrolactual" && c.ColumnName.ToLower().Trim() != "t940_desrolpropuesto" &&
                            c.ColumnName.ToLower().Trim() != "t940_motivopropuesto" && c.ColumnName.ToLower().Trim() != "t940_fechaproposicion" &&
                            c.ColumnName.ToLower().Trim() != "aprobador" && c.ColumnName.ToLower().Trim() != "t940_fecharesolucion")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }


                    dtbody.Columns["nombre_interesado"].ColumnName     = "Profesional";
                    dtbody.Columns["nombre_promotor"].ColumnName       = "Evaluador";
                    dtbody.Columns["t940_desrolActual"].ColumnName     = "Rol actual";
                    dtbody.Columns["t940_desrolPropuesto"].ColumnName  = "Rol propuesto";
                    dtbody.Columns["t940_motivopropuesto"].ColumnName  = "Motivo";
                    dtbody.Columns["t940_fechaproposicion"].ColumnName = "Proposición";
                    dtbody.Columns["aprobador"].ColumnName             = "Aprobador";
                    dtbody.Columns["t940_fecharesolucion"].ColumnName  = "Aprobación";

                    //Reordenar columnas
                    dtbody.Columns["Profesional"].SetOrdinal(0);
                    dtbody.Columns["Evaluador"].SetOrdinal(1);
                    dtbody.Columns["Rol actual"].SetOrdinal(2);
                    dtbody.Columns["Rol propuesto"].SetOrdinal(3);
                    dtbody.Columns["Motivo"].SetOrdinal(4);
                    dtbody.Columns["Proposición"].SetOrdinal(5);
                    dtbody.Columns["Aprobador"].SetOrdinal(6);
                    dtbody.Columns["Aprobación"].SetOrdinal(7);

                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                finally
                {
                    if (dTramitacion != null)
                    {
                        dTramitacion.Dispose();
                    }
                }
                break;

            case "formaciondemandada":

                //recuperar parametros del querystring
                int    idficepiFormacionDemandada = int.Parse(Request.QueryString["idficepi"]);
                int    desde                 = int.Parse(Request.QueryString["desde"]);
                int    hasta                 = int.Parse(Request.QueryString["hasta"]);
                string selmesinitext         = Request.QueryString["mesinitext"];
                string selanoinitext         = Request.QueryString["anoinitext"];
                string selmesfintext         = Request.QueryString["mesfintext"];
                string selanofintext         = Request.QueryString["anofintext"];
                int    numevaluadosFormacion = int.Parse(Request.QueryString["numevaluaciones"]);

                Nullable <short> colectivo     = short.Parse(Request.QueryString["colectivo"]);
                string           colectivotext = Request.QueryString["colectivotext"];

                sFilename = "Formación demandada" + sExtension;
                IB.Progress.BLL.FormacionDemandada dFormacion = null;
                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Formación demandada";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Desde";
                    oRow[1] = selmesinitext + " " + selanoinitext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Hasta";
                    oRow[1] = selmesfintext + " " + selanofintext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Colectivo";
                    oRow[1] = colectivotext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total evaluaciones";
                    oRow[1] = numevaluadosFormacion;
                    dtH.Rows.Add(oRow);

                    //Datatable de cuerpo
                    IB.Progress.Models.FormacionDemandada formacionDemandada = null;
                    dFormacion         = new IB.Progress.BLL.FormacionDemandada();
                    formacionDemandada = dFormacion.catFormacionDemandada(idficepiFormacionDemandada, desde, hasta, colectivo);
                    dFormacion.Dispose();

                    ////convertir la lista a datatable
                    DataTable dtbody = formacionDemandada.FormacionDemandadaS1.CopyGenericToDataTable <IB.Progress.Models.FormacionDemandadaSelect1>();
                    dtbody.TableName = "BODY-Excel";

                    ////Eliminar las columnas no necesarias
                    dtbody.Columns.Remove("t930_idvaloracion");
                    dtbody.Columns.Remove("idformulario");

                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                finally{
                    if (dFormacion != null)
                    {
                        dFormacion.Dispose();
                    }
                }
                break;


            case "arboldependencias":

                //recuperar parametros del querystring
                int    idficepiArbol     = int.Parse(Request.QueryString["idficepi"]);
                string idficepitextArbol = Request.QueryString["idficepitext"];
                int    idficepievaluador = int.Parse(Request.QueryString["idficepievaluador"]);
                string evaluadortext     = Request.QueryString["evaluadortext"];
                string rolevaluador      = Request.QueryString["rolevaluador"];
                int    numevaluadosArbol = int.Parse(Request.QueryString["numevaluados"]);

                sFilename = "Árbol de dependencias" + sExtension;

                IB.Progress.BLL.ArbolDependencias dArbol = null;

                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Árbol de dependencias";
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Evaluador/a";
                    oRow[1] = evaluadortext;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Rol del evaluador/a";
                    oRow[1] = rolevaluador;
                    dtH.Rows.Add(oRow);

                    oRow    = dtH.NewRow();
                    oRow[0] = "Total evaluados/as";
                    oRow[1] = numevaluadosArbol;
                    dtH.Rows.Add(oRow);

                    //Datatable cuerpo
                    List <IB.Progress.Models.ArbolDependencias> arbolDependencias = null;
                    dArbol            = new IB.Progress.BLL.ArbolDependencias();
                    arbolDependencias = dArbol.catalogoArbolDependencias(idficepievaluador);
                    dArbol.Dispose();


                    //eliminar las filas con profesional = "";
                    arbolDependencias = (from o in arbolDependencias
                                         select o).ToList <IB.Progress.Models.ArbolDependencias>();

                    //convertir la lista a datatable
                    DataTable dtbody = arbolDependencias.CopyGenericToDataTable <IB.Progress.Models.ArbolDependencias>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "evaluado" && c.ColumnName.ToLower().Trim() != "roldelevaluado")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //dtbody.Rows.Remove([dtbody.Rows[0])];
                    dtbody.Rows[0].Delete();

                    //renombar columnas
                    dtbody.Columns["evaluado"].ColumnName       = "Evaluado/a";
                    dtbody.Columns["roldelevaluado"].ColumnName = "Rol del evaluado/a";


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);



                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally {
                    if (dArbol != null)
                    {
                        dArbol.Dispose();
                    }
                }

                break;



            case "arboldependenciasALL":

                //recuperar parametros del querystring
                int    idficepiArbolALL     = int.Parse(Request.QueryString["idficepi"]);
                string idficepitextArbolALL = Request.QueryString["idficepitext"];
                int    idficepievaluadorALL = int.Parse(Request.QueryString["idficepievaluador"]);
                string evaluadortextALL     = Request.QueryString["evaluadortext"];
                string rolevaluadorALL      = Request.QueryString["rolevaluador"];
                int    numevaluadosArbolALL = int.Parse(Request.QueryString["numevaluados"]);

                sFilename = "Árbol de dependencias" + sExtension;

                IB.Progress.BLL.ArbolDependencias dArbolALL = null;

                try
                {
                    //Datatable de cabecera
                    DataTable  dtH = new DataTable("HEAD-Excel");
                    DataColumn dtc = new DataColumn("clave");
                    dtH.Columns.Add(dtc);
                    dtc = new DataColumn("valor");
                    dtH.Columns.Add(dtc);
                    DataRow oRow = dtH.NewRow();
                    oRow[0] = "title";
                    oRow[1] = "Árbol de dependencias";
                    dtH.Rows.Add(oRow);

                    //Datatable cuerpo
                    List <IB.Progress.Models.ArbolDependencias> arbolDependencias = null;
                    dArbol            = new IB.Progress.BLL.ArbolDependencias();
                    arbolDependencias = dArbol.catalogoArbolDependenciasALL(idficepievaluadorALL);
                    dArbol.Dispose();


                    //eliminar las filas con profesional = "";
                    //arbolDependencias = (from o in arbolDependencias
                    //                     select o).ToList<IB.Progress.Models.ArbolDependencias>();

                    //convertir la lista a datatable
                    DataTable dtbody = arbolDependencias.CopyGenericToDataTable <IB.Progress.Models.ArbolDependencias>();
                    dtbody.TableName = "BODY-Excel";

                    //Eliminar las columnas no necesarias
                    ArrayList arl = new ArrayList();
                    foreach (DataColumn c in dtbody.Columns)
                    {
                        if (c.ColumnName.ToLower().Trim() != "evaluado" && c.ColumnName.ToLower().Trim() != "roldelevaluado" && c.ColumnName.ToLower().Trim() != "evaluador" && c.ColumnName.ToLower().Trim() != "roldelevaluador")
                        {
                            arl.Add(c);
                        }
                    }
                    foreach (DataColumn dc in arl)
                    {
                        dtbody.Columns.Remove(dc.ColumnName);
                    }

                    //renombar columnas
                    dtbody.Columns["evaluado"].ColumnName        = "Evaluado/a";
                    dtbody.Columns["evaluador"].ColumnName       = "Evaluador/a";
                    dtbody.Columns["Roldelevaluador"].ColumnName = "Rol del evaluador/a";
                    dtbody.Columns["Roldelevaluado"].ColumnName  = "Rol del evaluado/a";


                    //reordenar columnas
                    dtbody.Columns["Evaluador/a"].SetOrdinal(0);
                    dtbody.Columns["Rol del evaluador/a"].SetOrdinal(1);
                    dtbody.Columns["Evaluado/a"].SetOrdinal(2);
                    dtbody.Columns["Rol del evaluado/a"].SetOrdinal(3);


                    //Agregar al dataset
                    ds.Tables.Add(dtH);
                    ds.Tables.Add(dtbody);

                    //exportar
                    oExcel = osvcEXCEL.getExcelFromDataSet(ds, sFilename);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (dArbolALL != null)
                    {
                        dArbolALL.Dispose();
                    }
                }

                break;
            }
        }
        catch (Exception ex)
        {
            this.hdnError.Value = "Error al exportar a excel.<br /><br />: " + ex.Message;
        }
        finally
        {
            if (osvcEXCEL != null && osvcEXCEL.State != System.ServiceModel.CommunicationState.Closed)
            {
                if (osvcEXCEL.State != System.ServiceModel.CommunicationState.Faulted)
                {
                    osvcEXCEL.Close();
                }
                else
                {
                    osvcEXCEL.Abort();
                }
            }
        }

        //Devolver el excel
        if (Response.IsClientConnected && hdnError.Value == "")
        {
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sFilename + "\"");
            Response.BinaryWrite(oExcel);
            Response.ContentType = "application/vnd.ms-excel";
            //Para que funcione en Chrome
            if (System.Web.HttpContext.Current.Request.Browser.Browser.ToString() == "Chrome")
            {
                Response.AddHeader("Content-Length", "999999999999");
            }
            Response.Flush();
            Response.Close();
            Response.End();
            System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
        }
    }