如何在 js-xlsx (sheetjs) 中从 HTML table 创建多个 XLSX sheet?
How to create more than one XLSX sheet from HTML table in js-xlsx (sheetjs)?
我正在使用 sheetjs 将我的一些 table 数据转换为 xlsx 格式(稍后下载)。
但是,如何将多个 sheet 添加到 xlsx 中?
当前代码为:
var elt = document.getElementById('table_instance');
var wb = XLSX.utils.table_to_book(elt, {sheet:"Sheet 1"});
我要找的是:
var elt = document.getElementById('table_instance');
var elt2 = document.getElementById('table_instance2');
var wb = XLSX.utils.table_to_book(
[elt, {sheet:"Sheet 1"}
[elt2, {sheet:"Sheet 2"}
);
谢谢
有一个 table_to_sheet
实用函数,它 returns 一个 sheet 可以插入到工作簿中的对象。
下面的示例显示了一个全新的工作簿,其中两个 sheet 来自两个不同的表:
// html
const tbl1 = document.getElementById("test1");
const tbl2 = document.getElementById("test2");
// new workbook - could be some existing book as well
let wb = XLSX.utils.book_new();
// table_to_sheet for different sheets from html table
let ws1 = XLSX.utils.table_to_sheet(tbl1);
let ws2 = XLSX.utils.table_to_sheet(tbl2);
// ... etc
// add sheets to workbook
// sheet names are your choice
XLSX.utils.book_append_sheet(wb, ws1, "Sheet1");
XLSX.utils.book_append_sheet(wb, ws2, "Sheet2");
// test persisted in sheet objects
const test1 = XLSX.utils.sheet_to_json(wb.Sheets["Sheet1"], {header: 1});
const test2 = XLSX.utils.sheet_to_json(wb.Sheets["Sheet2"], {header: 1});
console.log(`Sheet1: ${JSON.stringify(test1)}`);
console.log(`Sheet2: ${JSON.stringify(test2)}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.min.js"></script>
<table id="test1">
<tr><td>a1</td><td>b1</td><td>c1</td></tr>
<tr><td>d1</td><td>e1</td><td>f1</td></tr>
<tr><td>g1</td><td>h1</td><td>i1</td></tr>
</table>
<table id="test2">
<tr><td>a2</td><td>b2</td><td>c2</td></tr>
<tr><td>d2</td><td>e2</td><td>f2</td></tr>
<tr><td>g2</td><td>h2</td><td>i2</td></tr>
</table>
步骤:1
创建两个单独的工作表
var elt = document.getElementById('table_instance');
var elt2 = document.getElementById('table_instance2');
var ws = XLSX.utils.table_to_sheet(elt);
var ws2 = XLSX.utils.table_to_sheet(elt2);
步骤:2 创建一个空工作簿
var wb = XLSX.utils.book_new();
步骤:3将工作表附加到工作簿
XLSX.utils.book_append_sheet(wb, ws, "Sheet 1");
XLSX.utils.book_append_sheet(wb, ws2, "Sheet 2");
我正在使用 sheetjs 将我的一些 table 数据转换为 xlsx 格式(稍后下载)。
但是,如何将多个 sheet 添加到 xlsx 中?
当前代码为:
var elt = document.getElementById('table_instance');
var wb = XLSX.utils.table_to_book(elt, {sheet:"Sheet 1"});
我要找的是:
var elt = document.getElementById('table_instance');
var elt2 = document.getElementById('table_instance2');
var wb = XLSX.utils.table_to_book(
[elt, {sheet:"Sheet 1"}
[elt2, {sheet:"Sheet 2"}
);
谢谢
有一个 table_to_sheet
实用函数,它 returns 一个 sheet 可以插入到工作簿中的对象。
下面的示例显示了一个全新的工作簿,其中两个 sheet 来自两个不同的表:
// html
const tbl1 = document.getElementById("test1");
const tbl2 = document.getElementById("test2");
// new workbook - could be some existing book as well
let wb = XLSX.utils.book_new();
// table_to_sheet for different sheets from html table
let ws1 = XLSX.utils.table_to_sheet(tbl1);
let ws2 = XLSX.utils.table_to_sheet(tbl2);
// ... etc
// add sheets to workbook
// sheet names are your choice
XLSX.utils.book_append_sheet(wb, ws1, "Sheet1");
XLSX.utils.book_append_sheet(wb, ws2, "Sheet2");
// test persisted in sheet objects
const test1 = XLSX.utils.sheet_to_json(wb.Sheets["Sheet1"], {header: 1});
const test2 = XLSX.utils.sheet_to_json(wb.Sheets["Sheet2"], {header: 1});
console.log(`Sheet1: ${JSON.stringify(test1)}`);
console.log(`Sheet2: ${JSON.stringify(test2)}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.min.js"></script>
<table id="test1">
<tr><td>a1</td><td>b1</td><td>c1</td></tr>
<tr><td>d1</td><td>e1</td><td>f1</td></tr>
<tr><td>g1</td><td>h1</td><td>i1</td></tr>
</table>
<table id="test2">
<tr><td>a2</td><td>b2</td><td>c2</td></tr>
<tr><td>d2</td><td>e2</td><td>f2</td></tr>
<tr><td>g2</td><td>h2</td><td>i2</td></tr>
</table>
步骤:1 创建两个单独的工作表
var elt = document.getElementById('table_instance');
var elt2 = document.getElementById('table_instance2');
var ws = XLSX.utils.table_to_sheet(elt);
var ws2 = XLSX.utils.table_to_sheet(elt2);
步骤:2 创建一个空工作簿
var wb = XLSX.utils.book_new();
步骤:3将工作表附加到工作簿
XLSX.utils.book_append_sheet(wb, ws, "Sheet 1");
XLSX.utils.book_append_sheet(wb, ws2, "Sheet 2");