GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Exportar para Excel


#1

Boa dia pessoal.

Estou precisando de uma ajudinha, preciso exportar uma tabela com vários anos para o excel.Tenho uma tela com abas representando os anos de 2016,2017, 2018. Ao clicar na aba do ano aparece a tabela com os dados daquele ano, a partir de então clico no botão Exportar e a exportação é feita, mas atualmente só está considerando o ano de 2018. Preciso levar em consideração os anos de 2016 e 2017 no excel.

Vejam como está atualmente:

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” > ’ +
’<!–[if gte mso 9]><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name>’ +
’<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x: ExcelWorksheet></x: ExcelWorksheets></x: ExcelWorkbook>’ +
’<![endif]-- >

{table}

, 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, filename) {
//var alo = “babum.xls”;
if (!table.nodeType) table = document.getElementById(table)
    var tableClone = $(table).clone();

    tableClone.find(".colSelecionar").remove();

    var ctx = { worksheet: name || 'Worksheet', table: tableClone.html() }
    //window.location.href = uri + base64(format(template, ctx))

    var blob = new Blob([format(template, ctx)], { type: "application/vnd.ms-excel" });
    window.URL = window.URL || window.webkitURL;
    link = window.URL.createObjectURL(blob);
    a = document.createElement("a");
    a.download = filename + "_" + getDate() + ".xls";
    a.href = link;

    document.body.appendChild(a);

    a.click();

    document.body.removeChild(a);
}

})();

A função chamada acima getDate() está pegando apenas o ano de 2018, veja:

unction getDate() {
var d = new Date();

var month = d.getMonth() + 1;
var day = d.getDate();


var output = d.getFullYear() + '/' +
    (('' + month).length < 2 ? '0' : '') + month + '/' +
   (('' + day).length < 2 ? '0' : '') + day;


return output;

}

Como faço para modificar de tal forma que ao clicar no botão exportar seja considerado os demais anos e não apenas 2018? Alguém poderia me ajudar?

Desde já agradeço.
Flávia


#2

Oi pessoal.

Consegui evoluir mas ainda não cheguei na solução. Alterei o método getDate() para: function getDate() { var d = new Date();

var month = d.getMonth() + 1;
var day = d.getDate();
var ano= $("#divAbas li.active a").text();

var output = ano + '/' +
    (('' + month).length < 2 ? '0' : '') + month + '/' +
    (('' + day).length < 2 ? '0' : '') + day;
return output;

}

Desta forma pego o ano da aba que está ativa, sendo que o conteúdo de cada ano não está correto. Estou conseguindo passar o ano corretamente como parametro para o nome do arquivo exportado. Tenho que alterar alguma coisa no download da outra função. Pois na verdade estou querendo que ao clicar no botão Exportar seja exibida no excel 3 abas uma para cada ano. Não sei se consegui ser clara?

Obrigada, Flavia


#3

Olá pessoal.

Achei uma estrutura parecida com a minha neste artigo. Para cada aba tenho referências correspondentes a anos (2016,2017 e 2018) em cada aba. Vejam a estrutura(desenho), o código não importa muito, pois o meu está diferente:

O que quero fazer é exportar para um arquivo Excel , onde no mesmo terei 3 abas cada uma com o ano correspondente. Acho que assim ficou mais claro, se alguém puder me ajudar. Sou iniciante na área e estou com dificuldades.

Desde já agradeço.
Flávia