Download file excel

3

I created a file in excel, but now the user needs to download it, how can I do it? follow my method:

    public PartialViewResult ExportarParticipantes(int idPeriodo)
    {

        Regex reg = new Regex("[/ :]");

        // Monta arquivo para análise
        string fileName = string.Format("{0}_{1}", reg.Replace(DateTime.Now.ToString(), "_").Replace("&", ""), Path.GetFileName("passagens.xls"));

        string caminhoArquivo = Path.Combine(Caminho, fileName);

        ExcelHelper excelHelper = new ExcelHelper(caminhoArquivo);

        // Obtém dados
        Dictionary<string, int> colunas = new Dictionary<string, int>();
        UploadPassagem lstParticipantePassagem = null;
        List<UploadPassagem> lista = new List<UploadPassagem>();

        GerenciaPassagemModel model = new GerenciaPassagemModel();

        Periodo periodo = new PeriodoService().ListarPorId(idPeriodo);

        model.Mensagem = ValidarPeriodo(periodo);
        model.ListaPassagens = new PassagemService().ListarPassagensPorPeriodo(idPeriodo, true);


        foreach (var item in model.ListaPassagens)
        {
            lstParticipantePassagem = new UploadPassagem(); 
            lstParticipantePassagem.PARTICIPANTE = item.Participante.NomeCompleto;
            lstParticipantePassagem.CPF = item.Participante.CPF;
            lstParticipantePassagem.PASSAGEM = item.Passagens.ToString();
            lstParticipantePassagem.CONCESSIONÁRIA = item.Participante.EstruturaAtual.EstruturaNome;
            lstParticipantePassagem.STATUS = item.Acao == true ? "Aprovado" : item.Acao == false ? "Recusado" : "Pendente";

            lista.Add(lstParticipantePassagem);

        }


        excelHelper.Export<UploadPassagem>(lista);

        return PartialView("_ListaParticipante", model);
    }
    
asked by anonymous 12.05.2014 / 19:32

3 answers

1

Using EPPlus, here's how I'm doing:

var memoryStream = package.GetAsByteArray();

return base.File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName); //fileName é o nome do teu ficheiro
    
13.05.2014 / 10:25
2

Let's say you created it in a folder within your Arquivo project. Inside it has a file EXCEL ( xls ) with the name of Folder1.xls to which you want to download. Use in the return type method FileContentResult .

Code

public FileContentResult Excel()
{
      byte[] Excel = null;

      Excel = System.IO.File.ReadAllBytes(Server.MapPath("~/Arquivo/Pasta1.xls"));

      return new FileContentResult(Excel, "application/vnd.ms-excel");
}

In your Code

public FileContentResult ExportarParticipantes(int idPeriodo)
{

    Regex reg = new Regex("[/ :]");

    // Monta arquivo para análise
    string fileName = string.Format("{0}_{1}", reg.Replace(DateTime.Now.ToString(), "_").Replace("&", ""), Path.GetFileName("passagens.xls"));

    string caminhoArquivo = Path.Combine(Caminho, fileName);

    ExcelHelper excelHelper = new ExcelHelper(caminhoArquivo);

    // Obtém dados
    Dictionary<string, int> colunas = new Dictionary<string, int>();
    UploadPassagem lstParticipantePassagem = null;
    List<UploadPassagem> lista = new List<UploadPassagem>();

    GerenciaPassagemModel model = new GerenciaPassagemModel();

    Periodo periodo = new PeriodoService().ListarPorId(idPeriodo);

    model.Mensagem = ValidarPeriodo(periodo);
    model.ListaPassagens = new PassagemService().ListarPassagensPorPeriodo(idPeriodo, true);


    foreach (var item in model.ListaPassagens)
    {
        lstParticipantePassagem = new UploadPassagem();
        lstParticipantePassagem.PARTICIPANTE = item.Participante.NomeCompleto;
        lstParticipantePassagem.CPF = item.Participante.CPF;
        lstParticipantePassagem.PASSAGEM = item.Passagens.ToString();
        lstParticipantePassagem.CONCESSIONÁRIA = item.Participante.EstruturaAtual.EstruturaNome;
        lstParticipantePassagem.STATUS = item.Acao == true ? "Aprovado" : item.Acao == false ? "Recusado" : "Pendente";

        lista.Add(lstParticipantePassagem);

    }


    excelHelper.Export<UploadPassagem>(lista);

    byte[] Excel = System.IO.File.ReadAllBytes(caminhoArquivo);            

    return new FileContentResult(Excel, "application/vnd.ms-excel");
}
    
13.05.2014 / 00:50
1

The most correct is to specify a Action in the Controller that returns a FileResult . For example:

public FileResult ExportarExcel()
{
    // Monte aqui o arquivo Excel.
    // conteudoDoArquivo deve ser um byte[]

    return new File(conteudoDoArquivo, "application/vnd.ms-excel", "nomeDoArquivo.xls");
}
    
12.05.2014 / 19:40