Javascript 如何在jQuery中使用datatable自定义excel?
我正在使用DataTable(Jquery)导出excel文件。但我面对的是如何将额外的信息导出excel文件。我尝试了一些代码,但没有达到我的期望 我希望导出的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
但我的输出如下图所示,我的标题报告和地址位于中间,不在报告顶部:
使用下面的代码:
{
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