jsxlsx 前端处理excel的导出

git hub 完整源码看这里

上面已经做过一些介绍了,这里就不多说了,上代码。
function clickDownload()
{

    /* original data */
    var getData =[];
    $.ajax({
        'url':'aaaaaaaaaa',
        data:{dopost:'regbase',step:'1'},
        type:'get',
        async:false,
        dataType:"json",
        success: function(data){
            getData = commonFn.JsonToArr(data.data);
        },
        error:function (err) {
            commonFn.layerMsg('请求失败');
            return false;
        }
    });

    function datenum(v, date1904) {
        if(date1904) v+=1462;
        var epoch = Date.parse(v);
        return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
    }
    function sheet_from_array_of_arrays(data, opts) {
        var ws = {};
        var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }};
        for(var R = 0; R != data.length; ++R) {
            for(var C = 0; C != data[R].length; ++C) {
                if(range.s.r > R) range.s.r = R;
                if(range.s.c > C) range.s.c = C;
                if(range.e.r < R) range.e.r = R;
                if(range.e.c < C) range.e.c = C;
                var cell = {v: data[R][C] };
                if(cell.v == null) continue;
                var cell_ref = XLSX.utils.encode_cell({c:C,r:R});
                if(typeof cell.v === 'number') cell.t = 'n';
                else if(typeof cell.v === 'boolean') cell.t = 'b';
                else if(cell.v instanceof Date) {
                    cell.t = 'n'; cell.z = XLSX.SSF._table[14];
                    cell.v = datenum(cell.v);
                }
                else cell.t = 's';
                ws[cell_ref] = cell;
            }
        }
        if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
        return ws;
    }
    var ws_name = "SheetJS";
    var data = getData;
    function Workbook() {
        if(!(this instanceof Workbook)) return new Workbook();
        this.SheetNames = [];
        this.Sheets = {};
    }
    var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
    wb.SheetNames.push(ws_name);
    wb.Sheets[ws_name] = ws;
    var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'});

    function s2ab(s) {
        var buf = new ArrayBuffer(s.length);
        var view = new Uint8Array(buf);
        for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
        return buf;
    }

    var times = nowTime();
    var uName = 'aaa'+times+'.xlsx';
    saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), uName);
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-36810333-1']);
    _gaq.push(['_setDomainName', 'sheetjs.com']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();

    function nowTime() {
        var nowDate = new Date();
        var nowYear = nowDate.getFullYear();
        var nowMonth = nowDate.getMonth()+1;
        var nowDay = nowDate.getDate();
        var nowHour = nowDate.getHours();
        var nowMin = nowDate.getMinutes();
        var nowSec = nowDate.getSeconds();
        var str =nowYear+'年'+nowMonth+'月'+nowDay+'日'+nowHour+'时'+nowMin+'分'+nowSec+'秒';
        return str;
    }
}

随机浏览