// GET: Informe
        public ActionResult Index()
        {
            //Creamos el ViewModel para rellenar los datos
            Informe_VM informe_VM = new Informe_VM();

            //Creamos una lista que rellenaremos
            List <Moneda> listaMonedas = new List <Moneda>();
            Respuesta     respuesta    = Func_Monedas.recuperarListaMonedas(listaMonedas);

            //Asignamos la lista al ViewModel
            informe_VM.listaMonedas = listaMonedas;

            //Creamos una lista que rellenaremos y asignaremos al ViewModel
            List <TiposOperaciones> listaTiposOperaciones = new List <TiposOperaciones>();

            respuesta = Func_Monedas.recuperarListaTiposOperaciones(listaTiposOperaciones);
            informe_VM.listaTipoOperacion = listaTiposOperaciones;

            //Rellenamos la lista de operaciones en el ViewModel
            List <Operaciones> listaOperaciones = new List <Operaciones>();

            respuesta = Func_Monedas.recuperarListaOperaciones(listaOperaciones);
            informe_VM.listaOperaciones = listaOperaciones;

            List <SelectListItem> listaMovimientos = new List <SelectListItem>();

            respuesta = Func_Monedas.recuperarListaMovimientos(listaMovimientos);
            informe_VM.listaMovimientos = listaMovimientos;

            if (respuesta.tipoRespuesta != TipoRespuesta.OK)
            {
                return(View("Error"));
            }

            //Enviamos el ViewModel a la vista con los datos necesarios
            return(View(informe_VM));
        }
        public ActionResult Index(Informe_VM informe_VM)
        {
            int moneda_pk       = informe_VM.operaciones.Moneda_PK;
            int fechaMovimiento = informe_VM.movimientoSemana;

            //Creamos una lista que rellenaremos
            List <Moneda> listaMonedas = new List <Moneda>();
            Respuesta     respuesta    = Func_Monedas.recuperarListaMonedas(listaMonedas);

            //Asignamos la lista al ViewModel
            informe_VM.listaMonedas = listaMonedas;

            //Creamos una lista que rellenaremos y asignaremos al ViewModel
            List <TiposOperaciones> listaTiposOperaciones = new List <TiposOperaciones>();

            respuesta = Func_Monedas.recuperarListaTiposOperaciones(listaTiposOperaciones);
            informe_VM.listaTipoOperacion = listaTiposOperaciones;

            //Rellenamos la lista de operaciones en el ViewModel
            List <Operaciones> listaOperaciones = new List <Operaciones>();

            respuesta = Func_Monedas.recuperarListaOperaciones(listaOperaciones, moneda_pk, fechaMovimiento);
            informe_VM.listaOperaciones = listaOperaciones;

            List <SelectListItem> listaMovimientos = new List <SelectListItem>();

            respuesta = Func_Monedas.recuperarListaMovimientos(listaMovimientos);
            informe_VM.listaMovimientos = listaMovimientos;

            string    boton = Request.Form["btn"];
            DataTable datos = new DataTable();

            if (boton == "Exportar")
            {
                Func_Monedas.recuperarDatosExcel(datos, moneda_pk, fechaMovimiento);

                using (ExcelPackage excel = new ExcelPackage())
                {
                    //Creamos una hoja
                    ExcelWorksheet worksheet = excel.Workbook.Worksheets.Add("Hoja 1");

                    //Cargamos la lista en la hoja de excel
                    worksheet.Cells["A1"].LoadFromDataTable(datos, true);

                    //Creamos un rango
                    //Parámetros: 1a fila, 1a columna, última fila, última columna
                    ExcelRange range = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];

                    //Añadimos una tabla con el rango
                    ExcelTable tab = worksheet.Tables.Add(range, "tabla");

                    //Formateamos la tabla
                    tab.TableStyle = TableStyles.Medium2;

                    //Le damos espacio entre columnas
                    worksheet.Cells.AutoFitColumns();

                    //Creo un memorystream
                    using (var memoryStream = new MemoryStream())
                    {
                        //Tipo de contenido del stream. XMLS en este caso
                        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                        //Cabezera del archivo
                        Response.AddHeader("content-disposition", "attachment; filename= informe.xlsx");
                        //Guardamos el documento como memory stream
                        excel.SaveAs(memoryStream);
                        //Escribimos el stream en la respuesta del navegador
                        memoryStream.WriteTo(Response.OutputStream);
                        //Vaciamos y eliminamos la respuesta por seguridad
                        Response.Flush();
                        Response.End();
                    }
                }

                if (respuesta.tipoRespuesta != TipoRespuesta.OK)
                {
                    return(View("Error"));
                }
            }
            //return View("_resultados");
            return(View(informe_VM));
        }