<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>