<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<div id="printA">
<!-- 表格1 -->
<table>
<tr><th>姓名</th><th>部門</th></tr>
<tr><td>張三</td><td>技術部</td></tr>
</table>
<!-- 表格2 -->
<table>
<tr><th>項目</th><th>進度</th></tr>
<tr><td>系統升級</td><td>50%</td></tr>
<tr><td>安全審計</td><td>已完成</td></tr>
</table>
</div>
<button onclick="exportAllToOneSheet()">合并導出</button>
<script>
function exportAllToOneSheet() {
const div = document.getElementById('printA');
const tables = div.getElementsByTagName('table');
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet([[]]); // 創建空工作表
let currentRow = 0; // 當前寫入行指針
Array.from(tables).forEach((table, tableIndex) => {
// 將表格轉換為二維數組
const tableData = XLSX.utils.sheet_to_json(
XLSX.utils.table_to_sheet(table),
{ header: 1 }
);
// 添加表格間的分隔空行(第一個表格前不加)
if (tableIndex > 0) {
XLSX.utils.sheet_add_aoa(ws, [[""]], { origin: { r: currentRow, c: 0 } });
currentRow++;
}
// 將表格數據寫入工作表
XLSX.utils.sheet_add_aoa(ws, tableData, {
origin: { r: currentRow, c: 0 } // 從當前行開始寫入
});
// 更新行指針(+數據行數)
currentRow += tableData.length;
});
// 將工作表添加到工作簿
XLSX.utils.book_append_sheet(wb, ws, "合并數據");
// 生成并下載文件
XLSX.writeFile(wb, 'combined_tables.xlsx');
}
</script>