使用xlsx模块读取表格的前n行

5

我正在尝试使用xlsx模块从Excel表格中读取前五行数据。最初,我尝试使用sheet_to_json方法将整个表格数据转换为数组。

let sheetData = xlsx.utils.sheet_to_json(workbook.Sheets[sheetsList[i]], {
  header: 1,
  defval: '',
  blankrows: true
});

当文件大小巨大时(单个工作表中存在>10K条记录),会出现内存不足的问题。

其次,我尝试使用以下链接:https://github.com/SheetJS/js-xlsx/issues/214#issuecomment-96843418 但是我收到了以下错误:

    f:\xxx\node_modules\xlsx\xlsx.js:2774
function decode_range(range) { var x =range.split(":").map(decode_cell); return {s:x[0],e:x[x.length-1]}; }
                                            ^

TypeError: Cannot read property 'split' of undefined

我该如何解决这个问题?或者有其他可用的方法或模块,使我能够从csv、xlsx或xls中获取数据吗?

谢谢!


你可以尝试使用“流式”解析器来读取输入数据。这种解析器会一次处理文件的一部分,因此您不会遇到任何内存错误。看起来这个npm包可能会有所帮助。 - John Ellmore
@John Ellmore - 感谢您尝试帮助我。但这并不能解决我的问题。 - sreepurna
1个回答

14

可以通过 sheetRows 选项来获取表格的前 n 行。

因此,代码如下所示:

let workbook = xlsx.readFile(path, {sheetRows: 5})
 let sheetsList = workbook.SheetNames
 let sheetData = xlsx.utils.sheet_to_json(workbook.Sheets[sheetsList[i]], {
      header: 1,
      defval: '',
      blankrows: true
 });

这里我仅显示了前5行。

感谢所有尝试解决此问题的人。特别感谢xlsx社区成员。这里是链接:https://github.com/SheetJS/js-xlsx/issues/1225


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接