Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中使用datatable自定义excel?_Javascript_Jquery_Excel_Datatables_Export To Excel - Fatal编程技术网

Javascript 如何在jQuery中使用datatable自定义excel?

Javascript 如何在jQuery中使用datatable自定义excel?,javascript,jquery,excel,datatables,export-to-excel,Javascript,Jquery,Excel,Datatables,Export To Excel,我正在使用DataTable(Jquery)导出excel文件。但我面对的是如何将额外的信息导出excel文件。我尝试了一些代码,但没有达到我的期望 我希望导出的excel文件如下图所示: 但我的输出如下图所示,我的标题报告和地址位于中间,不在报告顶部: 使用下面的代码: { extend: 'excelHtml5', title: 'Trace Report', messageTop: 'ABC company' + 'address', //messa

我正在使用DataTable(Jquery)导出excel文件。但我面对的是如何将额外的信息导出excel文件。我尝试了一些代码,但没有达到我的期望

我希望导出的excel文件如下图所示:


但我的输出如下图所示,我的标题报告和地址位于中间,不在报告顶部:


使用下面的代码:

{
    extend: 'excelHtml5',
    title: 'Trace Report',
    messageTop: 'ABC company' + 'address',
    //message: "Any message for header inside the file. I am not able to put message in next row in excel file but you can use \n"+'modelID'+modelId,
    render: function (data, type, full, meta) {
        return '<a href="' + data + '">Download</a>'; //change the button text here
    },
    customize: function (xlsx) {

        var sheet = xlsx.xl.worksheets['sheet1.xml'];
        var numrows = 10;

        // add styles for the column header, these row will be moved down
        var clRow = $('row', sheet);

        //$(clRow[0]).find('c').attr('s', 32);

        //update Row
        clRow.each(function () {
            var attr = $(this).attr('r');

            var ind = parseInt(attr);
            ind = ind + numrows;
            //ind is num of row +1
            $(this).attr("r", ind);
        });

        // Create row before data
        $('row c ', sheet).each(function (index) {
            var attr = $(this).attr('r');

            var pre = attr.substring(0, 1);
            //pre=A,B,C..-F repeat 5 time
            var ind = parseInt(attr.substring(1, attr.length));
            ind = ind + numrows;
            $(this).attr("r", pre + ind);
        });

        function addRow(index, data) {
            var row = sheet.createElement('row');

            row.setAttribute("r", index);
            for (i = 0; i < data.length; i++) {
                var key = data[i].k;
                var value = data[i].v;

                var c = sheet.createElement('c');
                c.setAttribute("t", "inlineStr");
                c.setAttribute("s", "2"); /*set specific cell style here*/
                c.setAttribute("r", key + index);

                var is = sheet.createElement('is');
                var t = sheet.createElement('t');
                var text = sheet.createTextNode(value)


                t.appendChild(text);
                is.appendChild(t);
                c.appendChild(is);

                row.appendChild(c);

                debugger;
            }

            return row;
        }

        //add data to extra rows
        var countryStateList = 'asd';
        var agencyValue = 'asd';
        var reportGroupList = 'asd';
        var certNo = '3e'

        var r1 = addRow(1, [{
            k: 'A',
            v: 'Certificate Number'
        }, {
            k: 'B',
            v: 'Model ID:'
        }, {
            k: 'C',
            v: 'Serial Number'
        }, {
            k: 'D',
            v: 'Calibration Date'
        }]);
        var r2 = addRow(2, [{
            k: 'A',
            v: countryStateList
        }, {
            k: 'B',
            v: agencyValue
        }, {
            k: 'C',
            v: reportGroupList
        }, {
            k: 'D',
            v: certNo
        }]); //add one cell for row 1 
        //$('row c[r^="A"]', sheet).attr( 's', '25' );
        var sheetData = sheet.getElementsByTagName('sheetData')[0];
        // sheetData.insertBefore(r4,sheetData.childNodes[0]);
        // sheetData.insertBefore(r3,sheetData.childNodes[0]);
        sheetData.insertBefore(r2, sheetData.childNodes[0]);

        sheetData.insertBefore(r1, sheetData.childNodes[0]);
    }
}
{
扩展:“excelHtml5”,
标题:“跟踪报告”,
messageTop:'ABC公司'+'地址',
//消息:“文件中标题的任何消息。我无法将消息放在excel文件的下一行中,但您可以使用\n”+'modelID'+modelID
呈现:函数(数据、类型、完整、元){
返回“”;//在此处更改按钮文本
},
自定义:功能(xlsx){
var sheet=xlsx.xl.worksheets['sheet1.xml'];
var numrows=10;
//为列标题添加样式,这些行将下移
变量clRow=$(“行”,表);
//$(clRow[0]).find('c').attr('s',32);
//更新行
clRow.each(函数(){
var attr=$(this.attr('r');
var ind=parseInt(attr);
ind=ind+numrows;
//ind是行数+1
$(this.attr(“r”,ind);
});
//在数据之前创建行
$('c'行',表)。每个(函数(索引){
var attr=$(this.attr('r');
var pre=属性子字符串(0,1);
//pre=A、B、C..F重复5次
var ind=parseInt(attr.substring(1,attr.length));
ind=ind+numrows;
$(this.attr(“r”,pre+ind);
});
函数addRow(索引、数据){
var row=sheet.createElement('row');
row.setAttribute(“r”,索引);
对于(i=0;i