Sai*_*sri 4 javascript excel xlsx node.js js-xlsx
我有一个 Excel 工作表,有 500 行。我正在尝试获取从 101 到 200 的行。
我在谷歌中搜索过,我找到了一个获取起始行的示例,例如1到100或1到1000,甚至1到任何数字。
但我还没有找到任何代码来获取从第 m 行到第 n 行的行(这里“m”和“n”可以是任何数字,例如 m=101 到 n=200)
下面是我发现获取前 100 行的代码:
let workbook = XLSX.readFile('./files/uploaded_files/testfile.xlsx', {sheetRows: 100})
const wsname = workbook.SheetNames[0];
const ws = workbook.Sheets[wsname];
var exceldata = XLSX.utils.sheet_to_json(ws);
Run Code Online (Sandbox Code Playgroud)
即使有任何其他模块可以获取之间的行,我想知道是否有任何?
使用一个较小的例子:
有几种选择:
您可以使用当前的方法和从例如slice返回的数组sheet_to_json
// option 1
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);
Run Code Online (Sandbox Code Playgroud)
考虑minRow - 2到 1 行是标题,另外 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 }
]
Run Code Online (Sandbox Code Playgroud)
另一种选择是结合使用range和header(请参阅此处)选项。range允许您控制所考虑的范围sheet_to_json并header用于定义对象输出数组中使用的键。
您可以在导入整个文件后使用它,也可以继续使用该sheetRows选项,例如:
// option 2
const importRange = "A3:F6";
const headers = ["a", "b", "c"];
const wb = XLSX.readFile("./Book1.xlsx"); // not using sheetRows
const ws = wb.Sheets[wb.SheetNames[0]];
const data = XLSX.utils.sheet_to_json(ws, {range: importRange, header: headers});
console.log(data);
Run Code Online (Sandbox Code Playgroud)
其产生:
[
{ a: 4, b: 5, c: 6 },
{ a: 7, b: 8, c: 9 },
{ a: 10, b: 11, c: 12 },
{ a: 13, b: 14, c: 15 }
]
Run Code Online (Sandbox Code Playgroud)
请注意,如果省略该headers选项,则输出为:
[
{ '4': 7, '5': 8, '6': 9 },
{ '4': 10, '5': 11, '6': 12 },
{ '4': 13, '5': 14, '6': 15 }
]
Run Code Online (Sandbox Code Playgroud)
因为第 3 行中的值成为新的默认标头(我认为您可能不想要它)。
最后,如果您事先不知道标头,您可以先获取一个数组数组,然后再计算出标头:
// option 3
const importRange = "A3:F6";
const headers = 1;
const wb = XLSX.readFile("./Book1.xlsx"); // not using sheetRows
const ws = wb.Sheets[wb.SheetNames[0]];
const data = XLSX.utils.sheet_to_json(ws, {range: importRange, header: headers});
console.log(data);
Run Code Online (Sandbox Code Playgroud)
其产生:
[
[ 4, 5, 6 ],
[ 7, 8, 9 ],
[ 10, 11, 12 ],
[ 13, 14, 15 ]
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9315 次 |
| 最近记录: |