Exemple #1
0
        public Enumerators.RespuestaCargaExcel CargarExcelDataBase(string NombreXLS, string NombreTXT, string Extension, string RutaXLS, string RutaTXT, string Accion, out int FilaError, int IdArchivo = 0)
        {
            FilaError = 0;
            if (File.Exists(RutaXLS))
            {
                string excelConnectionString = string.Empty;
                if (Extension == ".xls")
                {
                    excelConnectionString = ConstantesHelpers.ConnectionExcelXLS(RutaXLS);
                }
                else if (Extension == ".xlsx")
                {
                    excelConnectionString = ConstantesHelpers.ConnectionExcelXLSX(RutaXLS);
                }

                OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
                excelConnection.Open();
                DataTable dt = new DataTable();

                dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                if (dt == null)
                {
                    return(Enumerators.RespuestaCargaExcel.ExcelVacio);
                }

                string[] excelSheets = new string[dt.Rows.Count];
                int      t           = 0;

                foreach (DataRow row in dt.Rows)
                {
                    excelSheets[t] = row["TABLE_NAME"].ToString();
                    t++;
                }
                OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);

                string    query = string.Format("Select * from [{0}]", excelSheets[0]);
                DataTable data  = new DataTable();
                using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1))
                {
                    dataAdapter.Fill(data);
                }

                ArchivoBL               oArchivoBL               = new ArchivoBL();
                BancoBL                 oBancoBL                 = new BancoBL();
                ProductoBL              oProductoBL              = new ProductoBL();
                ConceptoBL              oConceptoBL              = new ConceptoBL();
                ProductoBancoBL         oProductoBancoBL         = new ProductoBancoBL();
                ConceptoProductoBancoBL oConceptoProductoBancoBL = new ConceptoProductoBancoBL();
                int    Linea      = 0;
                string LineaError = "";


                try
                {
                    //oConceptoProductoBancoBL.DeleteAll();
                    //oProductoBancoBL.DeleteAll();
                    //oConceptoBL.DeleteAll();
                    //oProductoBL.DeleteAll();
                    //oBancoBL.DeleteAll();

                    var Bancos = data.AsEnumerable().GroupBy(r => r.Field <string>("ID").Trim())
                                 .Select(row => new Banco
                    {
                        IdBanco = row.First().Field <string>("ID").Trim(),
                        Nombre  = row.First().Field <string>("Banco").Trim(),
                        Web     = row.First().Field <string>("Web Banco").Trim()
                    });
                    //oBancoBL.BulkInsert(Bancos);

                    var Productos = data.AsEnumerable().GroupBy(r => r.Field <string>("Producto").Trim())
                                    .Select(row => new Producto
                    {
                        Nombre = row.First().Field <string>("Producto").Trim(),
                        Tipo   = int.Parse(row.First().Field <string>("Producto").Trim().Substring(0, 1))
                    });

                    //oProductoBL.BulkInsert(Productos);

                    var Conceptos = data.AsEnumerable().GroupBy(r => r.Field <string>("Concepto").Trim())
                                    .Select(row => new Concepto
                    {
                        Nombre = row.First().Field <string>("Concepto").Trim()
                    });

                    //oConceptoBL.BulkInsert(Conceptos);

                    var ProductosBancos = data.AsEnumerable().GroupBy(r => new
                    {
                        Banco    = r.Field <string>("ID").Trim(),
                        Producto = r.Field <string>("Producto").Trim()
                    }).
                                          Select(row => new ProductoBanco
                    {
                        IdBanco  = row.First().Field <string>("ID").Trim(),
                        Producto = new Producto
                        {
                            Nombre = row.First().Field <string>("Producto").Trim(),
                        },
                        WebTarifario = row.First().Field <string>("Web Tarifario").Trim(),
                        Contacto     = row.First().Field <string>("Contacto").Trim()
                    });

                    //oProductoBancoBL.BulkInsert(ProductosBancos);

                    StreamReader oStreamReader = new StreamReader(RutaTXT, Encoding.Default, false);
                    string[]     Datos         = oStreamReader.ReadLine().Split(Convert.ToChar(9));
                    List <ConceptoProductoBanco> ConceptosProductosBancos = new List <ConceptoProductoBanco>();
                    ConceptoProductoBanco        oConceptoProductoBanco   = null;

                    try
                    {
                        while (oStreamReader.Peek() >= 0)
                        {
                            Linea++;
                            LineaError = oStreamReader.ReadLine();
                            Datos      = LineaError.Split(Convert.ToChar(9));

                            oConceptoProductoBanco          = new ConceptoProductoBanco();
                            oConceptoProductoBanco.Concepto = new Concepto
                            {
                                Nombre = Datos[4]
                            };
                            oConceptoProductoBanco.ProductoBanco = new ProductoBanco
                            {
                                Producto = new Producto
                                {
                                    Nombre = Datos[3]
                                }
                            };
                            oConceptoProductoBanco.IdBanco      = Datos[1];
                            oConceptoProductoBanco.TipoComision = Datos[5];

                            if (Datos[6].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.Tasa30 = decimal.Parse(Datos[6]);
                            }
                            else
                            {
                                oConceptoProductoBanco.Tasa30 = 0;
                            }

                            if (Datos[7].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.Tasa60 = decimal.Parse(Datos[7]);
                            }
                            else
                            {
                                oConceptoProductoBanco.Tasa60 = 0;
                            }

                            if (Datos[8].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.Tasa90 = decimal.Parse(Datos[8]);
                            }
                            else
                            {
                                oConceptoProductoBanco.Tasa90 = 0;
                            }

                            if (Datos[9].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.Minimo = decimal.Parse(Datos[9]);
                            }
                            else
                            {
                                oConceptoProductoBanco.Minimo = 0;
                            }

                            if (Datos[10].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.Maximo = decimal.Parse(Datos[10]);
                            }
                            else
                            {
                                oConceptoProductoBanco.Maximo = 0;
                            }

                            if (Datos[11].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.METasaMax = decimal.Parse(Datos[11]);
                            }
                            else
                            {
                                oConceptoProductoBanco.METasaMax = 0;
                            }

                            if (Datos[12].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.METasaMin = decimal.Parse(Datos[12]);
                            }
                            else
                            {
                                oConceptoProductoBanco.METasaMin = 0;
                            }

                            if (Datos[13].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.MEMin = decimal.Parse(Datos[13]);
                            }
                            else
                            {
                                oConceptoProductoBanco.MEMin = 0;
                            }

                            if (Datos[14].Trim().Length > 0)
                            {
                                oConceptoProductoBanco.MEMax = decimal.Parse(Datos[14]);
                            }
                            else
                            {
                                oConceptoProductoBanco.MEMax = 0;
                            }

                            oConceptoProductoBanco.Observaciones = Datos[18];

                            ConceptosProductosBancos.Add(oConceptoProductoBanco);
                        }

                        oStreamReader.Close();
                        oStreamReader.Dispose();
                    }
                    catch (Exception ex)
                    {
                        FilaError = Linea;
                        return(Enumerators.RespuestaCargaExcel.ErrorFila);
                    }

                    oArchivoBL.InsertExcel(Bancos, Productos, Conceptos, ProductosBancos, ConceptosProductosBancos);
                    //oConceptoProductoBancoBL.BulkInsert(ConceptosProductosBancos);
                }
                catch (Exception)
                {
                    return(Enumerators.RespuestaCargaExcel.Error);
                }

                excelConnection.Dispose();
                excelConnection1.Dispose();
                if (Accion == "NUEVO")
                {
                    Archivo oArchivoEnt = new Archivo();
                    oArchivoEnt.NombreXLS = NombreXLS;
                    oArchivoEnt.NombreTXT = NombreTXT;
                    if (oArchivoBL.UploadExcelFile(oArchivoEnt))
                    {
                        return(Enumerators.RespuestaCargaExcel.Correcto);
                    }
                    else
                    {
                        return(Enumerators.RespuestaCargaExcel.Error);
                    }
                }
                else
                {
                    if (oArchivoBL.ActiveExcelFile(IdArchivo))
                    {
                        return(Enumerators.RespuestaCargaExcel.Correcto);
                    }
                    else
                    {
                        return(Enumerators.RespuestaCargaExcel.Error);
                    }
                }
            }
            else
            {
                return(Enumerators.RespuestaCargaExcel.ArchivoNoExiste);
            }
        }
Exemple #2
0
        public ActionResult Resultado()
        {
            ViewBag.UltimaFechaPublicacion = Formatos.ConvertirFechaFormatPiePagina(oArchivoBL.SelectActive().Fecha);
            NameValueCollection Form = Request.Form;
            double Monto             = double.Parse(Form["txtMonto"]);
            int    IdProducto        = int.Parse(Form["hdIdProducto"]);
            int    IdTipo            = int.Parse(Form["hdIdTipo"]);
            string TipoNombre        = Form["hdTipoNombre"];
            string BancosString      = Form["hdBancos"];
            int    Periodo           = int.Parse(Form["hdPeriodo"]);

            string[] BancosArray = BancosString.Split(',');

            BancoBL                         oBancoBL             = new BancoBL();
            ProductoBancoBL                 oProductoBancoBL     = new ProductoBancoBL();
            List <ProductoBanco>            ListaProductosBancos = new List <ProductoBanco>();
            List <ConceptoProductoBancoDTO> ListaConceptosProductosBancosUsuales    = new List <ConceptoProductoBancoDTO>();
            List <ConceptoProductoBancoDTO> ListaConceptosProductosBancosEventuales = new List <ConceptoProductoBancoDTO>();
            ConceptoProductoBancoBL         oConceptoProductoBancoBL = new ConceptoProductoBancoBL();

            foreach (string i in BancosArray)
            {
                var ProductoBanco = oProductoBancoBL.SelectByIdProductoAndIdBanco(IdProducto, i);
                ListaProductosBancos.Add(ProductoBanco);

                var ConceptosProductosBancosUsuales = oConceptoProductoBancoBL.SelectByProductoAndBancoAndTipoComision(IdProducto, i, "0401", Periodo).Concat(ListaConceptosProductosBancosUsuales);
                ListaConceptosProductosBancosUsuales = ConceptosProductosBancosUsuales.ToList();

                var ConceptosProductosBancosEventuales = oConceptoProductoBancoBL.SelectByProductoAndBancoAndTipoComision(IdProducto, i, "0402", Periodo).Concat(ListaConceptosProductosBancosEventuales);
                ListaConceptosProductosBancosEventuales = ConceptosProductosBancosEventuales.ToList();
            }

            ProductoBL oProductoBL = new ProductoBL();

            ViewBag.TipoNombre           = TipoNombre;
            ViewBag.Monto                = Monto;
            ViewBag.Periodo              = Periodo;
            ViewBag.ListaProductosBancos = ListaProductosBancos;
            ViewBag.ListaConceptosProductosBancosUsuales    = ListaConceptosProductosBancosUsuales;
            ViewBag.ListaConceptosProductosBancosEventuales = ListaConceptosProductosBancosEventuales;

            IList <Producto> ListaMediosDePago   = oProductoBL.SelectByTipo(1);
            IList <Producto> ListaFinanciamiento = oProductoBL.SelectByTipo(2);
            IList <Producto> ListaGarantias      = oProductoBL.SelectByTipo(3);
            IList <Producto> ListaEnvioDinero    = oProductoBL.SelectByTipo(4);

            ViewBag.ListaMediosDePago   = ListaMediosDePago;
            ViewBag.ListaFinanciamiento = ListaFinanciamiento;
            ViewBag.ListaGarantias      = ListaGarantias;
            ViewBag.ListaEnvioDinero    = ListaEnvioDinero;

            string       BancoEmpresa             = "";
            string       BancoEmpresaTabla        = "";
            string       MensajeBancoEmpresaJS    = "";
            string       MensajeBancoEmpresaPopUp = "";
            Producto     Producto       = null;
            List <Banco> Bancos         = null;
            bool         MostrarPeriodo = true;

            switch (IdTipo)
            {
            case 1:
                Producto = oProductoBL.Select(IdProducto);
                //Bancos = oProductoBancoBL.SelectByIdProducto(IdProducto);
                break;

            case 2:
                Producto = oProductoBL.Select(IdProducto);
                //Bancos = oProductoBancoBL.SelectByIdProducto(IdProducto);
                break;

            case 3:
                Producto = oProductoBL.Select(IdProducto);
                //Bancos = oProductoBancoBL.SelectByIdProducto(IdProducto);
                break;

            case 4:
                Producto = oProductoBL.SelectByTipo(4).First();
                //Bancos = oProductoBancoBL.SelectByIdProducto(Producto.IdProducto);
                MostrarPeriodo = false;
                break;
            }

            Bancos = oBancoBL.SelectAll().ToList();

            if (Producto.Nombre.StartsWith("1.5") || IdTipo == 4)
            {
                BancoEmpresa             = "empresa";
                MensajeBancoEmpresaJS    = "una empresa";
                MensajeBancoEmpresaPopUp = "una o más empresas";
                BancoEmpresaTabla        = "Empresa";
                MostrarPeriodo           = false;
            }
            else
            {
                BancoEmpresa             = "banco";
                MensajeBancoEmpresaJS    = "un banco";
                MensajeBancoEmpresaPopUp = "uno o más bancos";
                BancoEmpresaTabla        = "Banco";
            }

            if (Producto.Nombre.StartsWith("1.1") || Producto.Nombre.StartsWith("1.2") || Producto.Nombre.StartsWith("1.3"))
            {
                MostrarPeriodo = false;
            }

            ViewBag.IdTipo                   = IdTipo;
            ViewBag.TipoNombre               = TipoNombre;
            ViewBag.IdProducto               = IdProducto;
            ViewBag.Producto                 = Producto;
            ViewBag.ListaBancos              = Bancos;
            ViewBag.BancosString             = BancosString;
            ViewBag.BancoEmpresa             = BancoEmpresa;
            ViewBag.BancoEmpresaTabla        = BancoEmpresaTabla;
            ViewBag.BancosArray              = BancosArray;
            ViewBag.MensajeBancoEmpresaJS    = MensajeBancoEmpresaJS;
            ViewBag.MensajeBancoEmpresaPopUp = MensajeBancoEmpresaPopUp;
            ViewBag.MostrarPeriodo           = MostrarPeriodo;
            return(View());
        }
        public string GenerarExcelBody(string Tipo, int IdProducto, decimal Monto, int Periodo, string Bancos, string RutaGuardarExcel)
        {
            ArchivoBL oArchivoBL             = new ArchivoBL();
            string    UltimaFechaPublicacion = Formatos.ConvertirFechaFormatPiePagina(oArchivoBL.SelectActive().Fecha);

            string[] BancosArray = Bancos.Split(',');

            ProductoBL                      oProductoBL          = new ProductoBL();
            Producto                        oProducto            = oProductoBL.Select(IdProducto);
            ProductoBancoBL                 oProductoBancoBL     = new ProductoBancoBL();
            List <ProductoBanco>            ListaProductosBancos = new List <ProductoBanco>();
            List <ConceptoProductoBancoDTO> ListaConceptosProductosBancosUsuales    = new List <ConceptoProductoBancoDTO>();
            List <ConceptoProductoBancoDTO> ListaConceptosProductosBancosEventuales = new List <ConceptoProductoBancoDTO>();
            ConceptoProductoBancoBL         oConceptoProductoBancoBL = new ConceptoProductoBancoBL();

            foreach (string i in BancosArray)
            {
                var ProductoBanco = oProductoBancoBL.SelectByIdProductoAndIdBanco(IdProducto, i);
                ListaProductosBancos.Add(ProductoBanco);

                var ConceptosProductosBancosUsuales = oConceptoProductoBancoBL.SelectByProductoAndBancoAndTipoComision(IdProducto, i, "0401", Periodo).Concat(ListaConceptosProductosBancosUsuales);
                ListaConceptosProductosBancosUsuales = ConceptosProductosBancosUsuales.ToList();

                var ConceptosProductosBancosEventuales = oConceptoProductoBancoBL.SelectByProductoAndBancoAndTipoComision(IdProducto, i, "0402", Periodo).Concat(ListaConceptosProductosBancosEventuales);
                ListaConceptosProductosBancosEventuales = ConceptosProductosBancosEventuales.ToList();
            }

            string NombreExcel = "Resultado " + DateTime.Now.ToString("dd-MM-yyyy hh-mm-ss");

            var WorkBook  = new XLWorkbook();
            var WorkSheet = WorkBook.Worksheets.Add(NombreExcel);

            WorkSheet.Style.Font.SetFontName("Helvetica");
            WorkSheet.Style.Font.SetFontSize(10);
            WorkSheet.Style.Font.SetFontColor(XLColor.Black);
            WorkSheet.Style.Fill.SetBackgroundColor(XLColor.White);
            WorkSheet.Column(1).Width = 15.57;
            WorkSheet.Column(2).Width = 45;
            WorkSheet.Column(3).Width = 45;
            WorkSheet.Column(4).Width = 8.86;
            WorkSheet.Column(5).Width = 10.71;
            WorkSheet.Column(6).Width = 11.43;
            WorkSheet.Column(7).Width = 10.71;
            WorkSheet.Row(1).Height   = 28.5;
            WorkSheet.Row(2).Height   = 21;
            WorkSheet.Row(3).Height   = 21;
            WorkSheet.Row(4).Height   = 21;
            WorkSheet.Row(5).Height   = 21;
            int FilaActual = 1;

            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Simulador Financiero";
            FilaActual = FilaActual + 1;
            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Tarifario actualizado a " + UltimaFechaPublicacion;
            FilaActual = FilaActual + 1;
            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Producto: " + Tipo + " - " + oProducto.Nombre.Substring(4);
            FilaActual = FilaActual + 1;
            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Monto: $" + Formatos.ConvertirNumeroFormat(Monto);
            if (Periodo != 0)
            {
                FilaActual = FilaActual + 1;
                WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Periodo: " + Periodo.ToString() + " días";
                var RangeCabecera = WorkSheet.Range("A1:G" + FilaActual.ToString());
                RangeCabecera.Row(1).Merge().Style.Font.SetBold().Fill.SetBackgroundColor(XLColor.RedPigment).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Font.SetFontSize(18).Font.SetFontColor(XLColor.White).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(2).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(3).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(4).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(5).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
            }
            else
            {
                var RangeCabecera = WorkSheet.Range("A1:G" + FilaActual.ToString());
                RangeCabecera.Row(1).Merge().Style.Font.SetBold().Fill.SetBackgroundColor(XLColor.RedPigment).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Font.SetFontSize(18).Font.SetFontColor(XLColor.White).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(2).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(3).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                RangeCabecera.Row(4).Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
            }
            FilaActual = FilaActual + 1;
            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "";
            WorkSheet.Cell("A" + FilaActual.ToString()).Style.Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
            WorkSheet.Cell("B" + FilaActual.ToString()).Value = "Banco";
            var RangeBancoCabecera = WorkSheet.Range("B" + FilaActual.ToString() + ":C" + FilaActual.ToString());

            RangeBancoCabecera.Merge().Style.Font.SetBold().Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
            WorkSheet.Cell("D" + FilaActual.ToString()).Value = "Costo Financiero";
            var RangeGastoFinancieroCabecera = WorkSheet.Range("D" + FilaActual.ToString() + ":G" + FilaActual.ToString());

            RangeGastoFinancieroCabecera.Merge().Style.Font.SetBold().Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);

            int     ConteoRowSpanUsuales = 0;
            decimal GastoTotalUsual      = 0;
            int     RowSpanUsuales       = 0;

            int     ConteoRowSpanEventuales = 0;
            decimal GastoTotalEventual      = 0;
            int     RowSpanEventuales       = 0;

            foreach (var i in ListaProductosBancos)
            {
                ConteoRowSpanUsuales    = 0;
                ConteoRowSpanEventuales = 0;
                RowSpanUsuales          = 0;
                RowSpanEventuales       = 0;
                GastoTotalUsual         = 0;
                GastoTotalEventual      = 0;
                foreach (var cpbu in ListaConceptosProductosBancosUsuales)
                {
                    if (i.Banco.IdBanco == cpbu.IdBanco)
                    {
                        RowSpanUsuales = RowSpanUsuales + 1;
                        Formatos.CalcularGasto(cpbu.Tasa30, Monto, cpbu.Minimo, cpbu.Maximo, ref GastoTotalUsual);
                    }
                }
                FilaActual = FilaActual + 1;
                WorkSheet.Row(FilaActual).Height = 21;
                WorkSheet.Cell("A" + FilaActual.ToString()).Value = "";
                WorkSheet.Cell("A" + FilaActual.ToString()).Style.Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("B" + FilaActual.ToString()).Value = i.Banco.Nombre;

                var RangeBanco = WorkSheet.Range("B" + FilaActual.ToString() + ":C" + FilaActual.ToString());
                RangeBanco.Merge().Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.AirForceBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("D" + FilaActual.ToString()).Value = "$ " + Formatos.ConvertirNumeroFormat(GastoTotalUsual);
                var RangeGastoFinanciero = WorkSheet.Range("D" + FilaActual.ToString() + ":G" + FilaActual.ToString());
                RangeGastoFinanciero.Merge().Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.AirForceBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);

                FilaActual = FilaActual + 1;
                WorkSheet.Row(FilaActual).Height = 21;
                WorkSheet.Cell("A" + FilaActual.ToString()).Value = "";
                WorkSheet.Cell("A" + FilaActual.ToString()).Style.Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("B" + FilaActual.ToString()).Value = "Concepto";
                WorkSheet.Cell("B" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("C" + FilaActual.ToString()).Value = "Observaciones";
                WorkSheet.Cell("C" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("D" + FilaActual.ToString()).Value = "Tasa %";
                WorkSheet.Cell("D" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("E" + FilaActual.ToString()).Value = "Mínimo $";
                WorkSheet.Cell("E" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("F" + FilaActual.ToString()).Value = "Máximo $";
                WorkSheet.Cell("F" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("G" + FilaActual.ToString()).Value = "Gastos $";
                WorkSheet.Cell("G" + FilaActual.ToString()).Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);

                foreach (var cpbu in ListaConceptosProductosBancosUsuales)
                {
                    if (i.Banco.IdBanco == cpbu.IdBanco)
                    {
                        if (ConteoRowSpanUsuales == 0)
                        {
                            GastoTotalUsual = 0;
                            FilaActual      = FilaActual + 1;
                            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Costos Usuales";
                            var RangeCostosUsuales = WorkSheet.Range("A" + FilaActual.ToString() + ":A" + (FilaActual + RowSpanUsuales - 1).ToString());
                            RangeCostosUsuales.Merge().Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("B" + FilaActual.ToString()).Value = cpbu.Concepto.Nombre;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("C" + FilaActual.ToString()).Value = cpbu.Observaciones;
                            WorkSheet.Cell("C" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("D" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormatTasa(cpbu.Tasa30);
                            WorkSheet.Cell("D" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbu.Minimo);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbu.Maximo);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Value = Formatos.CalcularGasto(cpbu.Tasa30, Monto, cpbu.Minimo, cpbu.Maximo, ref GastoTotalUsual);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                        }
                        else
                        {
                            GastoTotalUsual = 0;
                            FilaActual      = FilaActual + 1;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Value = cpbu.Concepto.Nombre;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("C" + FilaActual.ToString()).Value = cpbu.Observaciones;
                            WorkSheet.Cell("C" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("D" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormatTasa(cpbu.Tasa30);
                            WorkSheet.Cell("D" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbu.Minimo);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbu.Maximo);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Value = Formatos.CalcularGasto(cpbu.Tasa30, Monto, cpbu.Minimo, cpbu.Maximo, ref GastoTotalUsual);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                        }
                        ConteoRowSpanUsuales++;
                    }
                }
                RowSpanEventuales = 0;
                foreach (var cpbe in ListaConceptosProductosBancosEventuales)
                {
                    if (i.Banco.IdBanco == cpbe.IdBanco)
                    {
                        RowSpanEventuales = RowSpanEventuales + 1;
                    }
                }

                foreach (var cpbe in ListaConceptosProductosBancosEventuales)
                {
                    if (i.Banco.IdBanco == cpbe.IdBanco)
                    {
                        if (ConteoRowSpanEventuales == 0)
                        {
                            GastoTotalEventual = 0;
                            FilaActual         = FilaActual + 1;
                            WorkSheet.Cell("A" + FilaActual.ToString()).Value = "Costos Eventuales";
                            var RangeCostosEventuales = WorkSheet.Range("A" + FilaActual.ToString() + ":A" + (FilaActual + RowSpanEventuales - 1).ToString());
                            RangeCostosEventuales.Merge().Style.Font.SetFontColor(XLColor.White).Fill.SetBackgroundColor(XLColor.SteelBlue).Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Center).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("B" + FilaActual.ToString()).Value = cpbe.Concepto.Nombre;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("C" + FilaActual.ToString()).Value = cpbe.Observaciones;
                            WorkSheet.Cell("C" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("D" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormatTasa(cpbe.Tasa30);
                            WorkSheet.Cell("D" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbe.Minimo);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbe.Maximo);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Value = Formatos.CalcularGasto(cpbe.Tasa30, Monto, cpbe.Minimo, cpbe.Maximo, ref GastoTotalEventual);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                        }
                        else
                        {
                            GastoTotalEventual = 0;
                            FilaActual         = FilaActual + 1;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Value = cpbe.Concepto.Nombre;
                            WorkSheet.Cell("B" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("C" + FilaActual.ToString()).Value = cpbe.Observaciones;
                            WorkSheet.Cell("C" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
                            WorkSheet.Cell("D" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormatTasa(cpbe.Tasa30);
                            WorkSheet.Cell("D" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbe.Minimo);
                            WorkSheet.Cell("E" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Value = Formatos.ConvertirNumeroFormat(cpbe.Maximo);
                            WorkSheet.Cell("F" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Value = Formatos.CalcularGasto(cpbe.Tasa30, Monto, cpbe.Minimo, cpbe.Maximo, ref GastoTotalEventual);
                            WorkSheet.Cell("G" + FilaActual.ToString()).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                        }
                        ConteoRowSpanEventuales++;
                    }
                }
                FilaActual = FilaActual + 1;
                WorkSheet.Row(FilaActual).Height = 44.25;
                WorkSheet.Cell("A" + FilaActual.ToString()).Value = "";
                WorkSheet.Cell("A" + FilaActual.ToString()).Style.Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black);
                WorkSheet.Cell("B" + FilaActual.ToString()).Value = "Datos de contacto: (*) Consulte la fuente de información aqui o tome contacto con " + i.Banco.Nombre + " a través de " + i.Contacto;
                var RangeFooterBanco = WorkSheet.Range("B" + FilaActual.ToString() + ":G" + FilaActual.ToString());
                RangeFooterBanco.Merge().Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center).Alignment.SetVertical(XLAlignmentVerticalValues.Top).Border.SetOutsideBorder(XLBorderStyleValues.Medium).Border.SetOutsideBorderColor(XLColor.Black).Alignment.SetWrapText();
            }
            WorkBook.SaveAs(RutaGuardarExcel);
            return("OK");
        }