js table转str后台下载

//根据显示的table下载(非固定首行首列)
var tableDl2 = function (table_id) {
   
    var reg = new RegExp(',', "g")

    //表格数据下载
    var columnNum;
    var body = [];
    var exXAxis = $('#' + table_id).children('tbody').children();
    columnNum = exXAxis.eq(0).find('td').length;
    for (var i = 0, l = exXAxis.length; i < l; i++) {
        //以第二行加1的表头列数为准

        for (var j = 0, k = 0; j < columnNum;) {
            if (j == 0 && typeof (body[i]) == 'undefined')
                body[i] = [];
            var value;
            //解决跨列问题
            var colsSpan = exXAxis.eq(i).find('td').eq(k)[0].colSpan;
            for (var c = colsSpan; c > 0; c--) {
                value = exXAxis.eq(i).find('td').eq(k)[0].innerText.replace(reg, '');
                if (typeof (body[i][j + c - 1]) == 'undefined')
                    body[i][j + c - 1] = value;
                else if (c == 1)
                    k--;
                //解决跨行串列问题
                var rspan = exXAxis.eq(i).find('td').eq(k)[0].rowSpan;
                for (var r = rspan; r > 1; r--) {
                    if (j == 0) body[i + r - 1] = [];
                    body[i + r - 1][j] = value;
                }

                if (c == 1) {
                    k++;
                    j = j + colsSpan;
                }
            }
        }

    }


    //表头下载
    var title = [];
    var exXAxis = $('#' + table_id).children('thead').children();
    for (var i = 0, l = exXAxis.length; i < l; i++) {
        //以第二行加1的表头列数为准
        for (var j = 0, k = 0; j < columnNum;) {
            if (j == 0 && typeof (title[i]) == 'undefined')
                title[i] = [];
            var value;
            //解决跨列问题
            var colsSpan = exXAxis.eq(i).find('th').eq(k)[0].colSpan;
            for (var c = colsSpan; c > 0; c--) {
                value = exXAxis.eq(i).find('th').eq(k)[0].innerText.replace(reg, '');
                if (typeof (title[i][j + c - 1]) == 'undefined')
                    title[i][j + c - 1] = value;
                else if (c == 1)
                    k--;
                //解决跨行串列问题
                var rspan = exXAxis.eq(i).find('th').eq(k)[0].rowSpan;
                for (var r = rspan; r > 1; r--) {
                    if (j == 0) title[i + r - 1] = [];
                    title[i + r - 1][j] = value;
                }

                if (c == 1) {
                    k++;
                    j = j + colsSpan;
                }
            }
        }

    }

  //  strresult = result;

    var str = JSON.stringify(title.concat(body));
   // var str = JSON.stringify(title);
    var titledl = $('#' + table_id)[0].title;
    DownLoadFile({
        url: "/sys_manage/report/Download/Download2",
        data: { "title": titledl, "data": (str) }//要发送的数据
    });
}

 

 

 

 


var DownLoadFile = function (options) {
    var config = $.extend(true, { method: 'post' }, options);
    var $iframe = $('<iframe id="down-file-iframe" />');
    var $form = $('<form target="down-file-iframe" method="' + config.method + '"  enctype="multipart/form-data"/>');
    $form.attr('action', config.url);
    for (var key in config.data) {
        //  if (key != 'data')
        $form.append('<input type="hidden" name="' + key + '" value="' + escape(config.data[key])/*.replace('"[', '[').replace(']"',']').replace(reg,'\'')*/ + '" />');
        //  else
        //     $form.append("file", fso);// 文件对象   

    }
    $iframe.append($form);
    $(document.body).append($iframe);
    $form[0].submit();
    $iframe.remove();
}

posted @ 2018-10-24 17:31  KJXY  阅读(141)  评论(0)    收藏  举报