Exportar para Excel

image

Olá pessoal, o meu nome é Mauricio Junior e hoje eu vou falar um pouco de como exportar uma página web para excel de forma bem simples e fácil.

Problema:

Esse problema é baseado em muitos serviços e sistemas internos, porque normalmente os gerentes querem converter uma página em um relatório em excel. Para isso, existem várias ferramentas e plugins mas a melhor maneira é fazer usando javascript, grátis e simples.

Solução:

Exportar uma p√°gina feita em .NETCore usando C# e Razor para um arquivo em excel usando JavaScript. A fun√ß√£o em JavaScript j√° est√° pronta mas √© necess√°rio fazer a chamada passando os par√Ęmetros necess√°rios.

Função em JavaScript

A fun√ß√£o em JavaScript come√ßa sempre com a tag <script>. √Č bom deixar sempre a fun√ß√£o em JavaScript no in√≠cio da p√°gina onde voc√™ pode chamar sem qualquer tipo de problema e a p√°gina em HTML j√° vai ter carregado as fun√ß√Ķes necess√°rias.

<script>
    //export to excel
    var tableToExcel = (function () {
        var uri = 'data:application/vnd.ms-excel;base64,'
            , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
            , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
            , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }

        return function (table, name) {
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
            window.location.href = uri + base64(format(template, ctx))
        }
    })()

</script>

Código 1.1 - Função em JavaScript

O que voc√™ precisa notar nesse momento s√£o os par√Ęmetros que preciso mandar. √Č necess√°rio mandar o nome do Id da sua table da p√°gina e o nome que voc√™ quer dar para ela.

Vamos analisar a nossa tabela da página em HTML. Código 1.2.

<table class="scroll" id="resultTable" width="100%">
    <thead>
        <tr style="background-color:#dedede; font-weight:bold; font-size:small;">
            <th>Nome</th>
            <th>Endereço</th>
            <th>E-mail</th>
            <th>Data</th>
            <th>&nbsp;</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>@Html.Raw(item.Nome)</td>
            <td width="10%">@Html.Raw(item.Endereco)</td>
            <td>@Html.Raw(item.Email)</td>
            <td>@Html.Raw(item.Data)</td>
        </tr>
    </tbdody>
</table>
<a href="#" onclick="javascript: tableToExcel('resultTable', 'Minha tabela')" title="Exportar para Excel">Exportar</a>

Código 1.2 - Tabela na página de HTML

Abaixo da tabela eu coloquei um link <a href> e no onclick existe a chamada do c√≥digo javascript pelo nome tableToExcel passando os par√Ęmetros necess√°rios como o id da tabela e o nome.

Bom, espero que tenha gostado e qualquer d√ļvida pode falar comigo pelo site https://www.mauriciojunior.net.