none
Planilha Excel! (Como gerar e salvar) RRS feed

  • Pergunta

  • Olá,

    Estou com um problema, consigo gerar a planilha e até mesmo popular os dados nela, porem consigo salvar a mesma somente quando eu rodo o código local, acredito que eu precise de algo para gerar o arquivo na memória do site e salvar esse arquivo direto na maquina cliente, mas não estou conseguindo fazer isso.. e dar a opção de onde salvar o arquivo também preciso..

    Alguém pode me ajudar?

    segunda-feira, 11 de novembro de 2013 11:15

Respostas

  • Bom dia,

    Você pode utilizar as linhas abaixo para disponibilizar o arquivo como download.

    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "attachment;filename=arquivo.xls");

    Pode utilizar este artigo aqui que vai te ajudar

    http://cbsa.com.br/post/converter-dataset-para-excel---aspnet---c.aspx

    segunda-feira, 11 de novembro de 2013 14:11
  • Olá Rafael, Blz !

    Então cara, a melhor solução é que o cara possa baixar o arquivo excel assim que acessar sua view que esta a listar as informações, por que ?, bom porque seu usuário nunca vai desejar que assim que ele acessar a view seja feito o download e salvo em um lugar que você developer .net decidiu. Por default sempre será a pasta de Downloads no Windows, "todo e qualquer download". 

    Bom esta solução funciona da seguinte forma: 

    Assim que seu usuário acessar a lista o Metodo Response.AddHeader irá dizer para seu server, "Cara transforma este html em arquivo excel, no caso quem faz isso é o Response.ContentType".

    Em seguida o browser irá transforma a view em um arquivo excel, e gera o arquivo para download, Simples !

    Código: (Obs: Codigo do projeto intranet da minha empresa)

    Note os métodos Response, onde eles devem ficar !

    @model Educacional.Intranet.CadastroPortal.Models.InscritosVM
    @{
        ViewBag.Title = "Listar";
        Layout = "~/Views/Shared/_LayoutPadraoCadastroPortal.cshtml";
        Response.AddHeader("Content-Type", "application/vnd.ms-excel");
        Response.AppendHeader("Content-Disposition", "filename=BaseDeInscritos.xls; attachment");
    }
    
    <h2>Registros de Inscritos</h2>
    
    @if (TempData["msg"] != null)
    {
        @Html.Partial("_PartialErro")
    }
    
    <table class="table table-striped">
        <thead>
            <tr>
                <th>Codigo</th>
                <th>Nome</th>
                <th>Email</th>
                <th>1º DDD</th>
                <th>1º Telefone</th>
                <th>2º DDD</th>
                <th>2º Telefone</th>
                <th>3º DDD</th>
                <th>3º Telefone</th>
                <th>Data</th>
                <th>Curso Escolhido</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var registro in Model.Inscritos)
            {     
                
                <tr>
                    <td>@registro.CodigoInscrito</td>
                    <td>@registro.Nome</td>
                    <td>@registro.Email</td>
                    <td>@registro.DddPrimario</td>
                    <td>@registro.TelefonePrimario</td>
                    <td>@registro.DddSegundario</td>
                    <td>@registro.TelefoneSegundario</td>
                    <td>@registro.DddTerceario</td>
                    <td>@registro.TelefoneTerceario</td>
                <td>@registro.DataHora.ToShortDateString()</td>
                    <td>
                    @foreach (var curso in registro.CursoEscolhido)
                    {
                        @Html.Label(curso.Curso + ", ")
                    }
                    </td>
                </tr>  
            }
        </tbody>
    </table>

    Se foi útil e resolveu teu problema, por favor marcar como respondido, isso me ajuda. rsrs Valeu !

    Anderson Anzileiro - Integrante .NetCoders




    • Sugerido como Resposta Anderson Anzileiro terça-feira, 12 de novembro de 2013 18:34
    • Editado Anderson Anzileiro terça-feira, 12 de novembro de 2013 19:04
    • Marcado como Resposta Giovani Cr terça-feira, 19 de novembro de 2013 12:22
    terça-feira, 12 de novembro de 2013 18:34

Todas as Respostas

  • Bom dia,

    Você pode utilizar as linhas abaixo para disponibilizar o arquivo como download.

    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "attachment;filename=arquivo.xls");

    Pode utilizar este artigo aqui que vai te ajudar

    http://cbsa.com.br/post/converter-dataset-para-excel---aspnet---c.aspx

    segunda-feira, 11 de novembro de 2013 14:11
  • Olá Rafael, Blz !

    Então cara, a melhor solução é que o cara possa baixar o arquivo excel assim que acessar sua view que esta a listar as informações, por que ?, bom porque seu usuário nunca vai desejar que assim que ele acessar a view seja feito o download e salvo em um lugar que você developer .net decidiu. Por default sempre será a pasta de Downloads no Windows, "todo e qualquer download". 

    Bom esta solução funciona da seguinte forma: 

    Assim que seu usuário acessar a lista o Metodo Response.AddHeader irá dizer para seu server, "Cara transforma este html em arquivo excel, no caso quem faz isso é o Response.ContentType".

    Em seguida o browser irá transforma a view em um arquivo excel, e gera o arquivo para download, Simples !

    Código: (Obs: Codigo do projeto intranet da minha empresa)

    Note os métodos Response, onde eles devem ficar !

    @model Educacional.Intranet.CadastroPortal.Models.InscritosVM
    @{
        ViewBag.Title = "Listar";
        Layout = "~/Views/Shared/_LayoutPadraoCadastroPortal.cshtml";
        Response.AddHeader("Content-Type", "application/vnd.ms-excel");
        Response.AppendHeader("Content-Disposition", "filename=BaseDeInscritos.xls; attachment");
    }
    
    <h2>Registros de Inscritos</h2>
    
    @if (TempData["msg"] != null)
    {
        @Html.Partial("_PartialErro")
    }
    
    <table class="table table-striped">
        <thead>
            <tr>
                <th>Codigo</th>
                <th>Nome</th>
                <th>Email</th>
                <th>1º DDD</th>
                <th>1º Telefone</th>
                <th>2º DDD</th>
                <th>2º Telefone</th>
                <th>3º DDD</th>
                <th>3º Telefone</th>
                <th>Data</th>
                <th>Curso Escolhido</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var registro in Model.Inscritos)
            {     
                
                <tr>
                    <td>@registro.CodigoInscrito</td>
                    <td>@registro.Nome</td>
                    <td>@registro.Email</td>
                    <td>@registro.DddPrimario</td>
                    <td>@registro.TelefonePrimario</td>
                    <td>@registro.DddSegundario</td>
                    <td>@registro.TelefoneSegundario</td>
                    <td>@registro.DddTerceario</td>
                    <td>@registro.TelefoneTerceario</td>
                <td>@registro.DataHora.ToShortDateString()</td>
                    <td>
                    @foreach (var curso in registro.CursoEscolhido)
                    {
                        @Html.Label(curso.Curso + ", ")
                    }
                    </td>
                </tr>  
            }
        </tbody>
    </table>

    Se foi útil e resolveu teu problema, por favor marcar como respondido, isso me ajuda. rsrs Valeu !

    Anderson Anzileiro - Integrante .NetCoders




    • Sugerido como Resposta Anderson Anzileiro terça-feira, 12 de novembro de 2013 18:34
    • Editado Anderson Anzileiro terça-feira, 12 de novembro de 2013 19:04
    • Marcado como Resposta Giovani Cr terça-feira, 19 de novembro de 2013 12:22
    terça-feira, 12 de novembro de 2013 18:34