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 では空のままであり、結合されません。それらを手動でマージできます。
理想的な解決策ではありませんが、これは今のところ私にとっては完璧に機能しました。