Если вы хотите экспортировать level1 также и в Excel, есть альтернативный способ:
Замените rowspan / colspan пустыми ячейками, такими как:
<thead>
<tr>
<th>Level 1</th>
<th>Level 1 - Item 1</th>
<th></th>
<th>Level 1 - Item 2</th>
<th></th>
</tr>
<tr>
<th>Level 2</th>
<th>Level 2 - Item 1a</th>
<th>Level 2 - Item 1b</th>
<th>Level 2 - Item 2a</th>
<th>Level 2 - Item 2b</th>
</tr>
</thead>
Тогда, как предложено @misiu
выше, отредактируйте TableTools.js.
Найдите _fnGetDataTablesData
и внутри него измените это:
if (oConfig.bHeader) { ... }
следующим образом:
if (oConfig.bHeader) {
//another loop
for (i = 0, rowCount = dt.nTHead.rows.length; i < rowCount; i++) {
aRow = []; //clear row data
for (j = 0, iLen = dt.aoColumns.length; j < iLen; j++) {
if (aColumnsInc[j] && dt.nTHead.rows[i].children[j] !== null) {
sLoopData = dt.nTHead.rows[i].children[j].innerHTML.replace(/\n/g, " ")
.replace(/<.*?>/g, "")
.replace(/^\s+|\s+$/g, "");
sLoopData = this._fnHtmlDecode(sLoopData);
aRow.push(this._fnBoundData(sLoopData, oConfig.sFieldBoundary, regex));
} else {
aRow.push(this._fnBoundData("", oConfig.sFieldBoundary, regex)); //I'm not shure of this!!
}
}
aData.push(aRow.join(oConfig.sFieldSeperator));
}
}
Это скопирует / экспортируетсложные заголовки в CSV / Excel.Хотя пустые ячейки таблицы останутся пустыми в Excel и не будут объединены.Вы можете вручную объединить их.
Хотя это и не идеальное решение, на данный момент это отлично работает для меня.