【分享】使用sheetjs导出xlsx(树形结构数据)
使用SheetJS导出树形结构的数据到XLSX文件,你可以先将树形结构转换为平面表格形式,然后使用SheetJS的XLSX.utils.aoa_to_sheet
方法生成工作表,最后通过XLSX.write
方法导出文件。以下是一个简单的实现示例:
const XLSX = require('xlsx');
// 假设你有一个树形结构的数据
const treeData = [
{
id: 1,
name: 'Node 1',
children: [
{ id: 2, name: 'Child 1' },
{ id: 3, name: 'Child 2' },
],
},
{
id: 4,
name: 'Node 2',
children: [
{ id: 5, name: 'Child 3' },
{ id: 6, name: 'Child 4' },
],
},
];
function flattenTree(tree, level = 0) {
return tree.reduce((acc, node) => {
const row = [node.name]; // 根据需要,你可以添加更多列
acc.push(row);
if (node.children && node.children.length > 0) {
acc = acc.concat(flattenTree(node.children, level + 1).map(childRow => [...row, ...childRow]));
}
return acc;
}, []);
}
function exportToXLSX(tree, fileName) {
const headers = ['Name']; // 根据你的树形结构,定义表头
const data = flattenTree(tree);
const ws = XLSX.utils.aoa_to_sheet([headers, ...data]);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
XLSX.writeFile(wb, fileName);
}
exportToXLSX(treeData, 'treeData.xlsx');
这段代码首先定义了一个flattenTree
函数,该函数递归地将树形结构转换为一个平面数组。然后定义了一个exportToXLSX
函数,该函数接受树形结构数据和文件名作为参数,并将其导出为XLSX文件。
确保你已经安装了SheetJS:
npm install xlsx
运行上述代码后,你将得到一个名为treeData.xlsx
的文件,其中包含了树形结构数据的平面表示。
评论已关闭