【问题标题】:Reading first n lines of sheet using xlsx module使用 xlsx 模块读取工作表的前 n 行
【发布时间】:2018-08-21 05:32:47
【问题描述】:

我正在尝试使用 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 中获取数据?

谢谢!

【问题讨论】:

  • 您可能会查看“流式”解析器来读取您的输入数据。这样的解析器将一次对文件的块进行操作,因此您不会遇到任何内存不足错误。看起来this npm package 可能会成功。
  • @John Ellmore - 感谢您尝试帮助我。但这并不能解决我的问题。

标签: javascript node.js xlsx


【解决方案1】:

可以借助存在的 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

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2018-01-13
    相关资源
    最近更新 更多