使用较小的示例:
![enter image description here](https://istack.dev59.com/8YEGX.webp)
有几个选择:
您可以使用当前的方法并从 sheet_to_json
返回的数组中进行切片(slice)
。
const maxRow = 6;
const minRow = 3;
const wb = XLSX.readFile("./Book1.xlsx", {sheetRows: maxRow});
const ws = wb.Sheets[wb.SheetNames[0]];
let data = XLSX.utils.sheet_to_json(ws);
data = data.slice(minRow <= 2 ? 0 : minRow - 2);
console.log(data);
这里的 minRow - 2
是为了考虑到第一行是表头,而另一个1是为了包括第3行而不是排除它。这将产生以下结果:
[ { a: 4, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }, { a: 10, b: 11, c: 12 }, { a: 13, b: 14, c: 15 }]
另一个选项是结合使用 range
和 header
选项(参见这里)。range
允许您控制 sheet_to_json
考虑的范围,而 header
用于定义输出对象数组中使用的键。
您可以在导入整个文件后使用此选项,或者继续使用 sheetRows
选项,例如:
const importRange = "A3:F6";
const headers = ["a", "b", "c"];
const wb = XLSX.readFile("./Book1.xlsx");
const ws = wb.Sheets[wb.SheetNames[0]];
const data = XLSX.utils.sheet_to_json(ws, {range: importRange, header: headers});
console.log(data);
这将生成:
[ { a: 4, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }, { a: 10, b: 11, c: 12 }, { a: 13, b: 14, c: 15 }]
请注意,如果省略headers
选项,则输出结果为:
[
{ '4': 7, '5': 8, '6': 9 },
{ '4': 10, '5': 11, '6': 12 },
{ '4': 13, '5': 14, '6': 15 }
]
因为第3行的值成为新的默认标题(我认为您可能不想要这样)。
最后,如果您事先不知道标题,可以获取一个数组,并稍后确定标题:
const importRange = "A3:F6";
const headers = 1;
const wb = XLSX.readFile("./Book1.xlsx");
const ws = wb.Sheets[wb.SheetNames[0]];
const data = XLSX.utils.sheet_to_json(ws, {range: importRange, header: headers});
console.log(data);
生成:
[
[ 4, 5, 6 ],
[ 7, 8, 9 ],
[ 10, 11, 12 ],
[ 13, 14, 15 ]
]