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> </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.