JavaScript使用read-excel-file库如何读取Excel文件单行数据
JavaScript 读取Excel单行/逐行数据实现方案
你当前使用的read-excel-file@4.x默认会将整个Excel解析为二维数组返回,数组的每一项对应Excel的一行数据,不需要做额外的解析改造,有两种实现方式适配你的需求:
方案1:小文件场景,基于现有代码快速改造
你拿到的data返回值本身已经是按行拆分好的结构,直接通过数组下标即可读取指定单行,不需要遍历全部数据;如果要实现逐行顺序读取,只需要维护一个当前行的索引计数器即可。
修正后的可运行代码:
<script src="https://unpkg.com/read-excel-file@4.x/bundle/read-excel-file.min.js"></script> <body> <input type="file" id="input"> <button id="nextBtn" disabled>读取下一行</button> <script> const input = document.getElementById('input'); const nextBtn = document.getElementById('nextBtn'); let allRows = []; let currentReadIndex = 0; input.addEventListener("change", function (){ readXlsxFile(input.files[0]).then(function (data){ allRows = data; currentReadIndex = 0; nextBtn.disabled = false; // 读取第一行(下标0对应Excel第1行) console.log('第1行数据:', allRows[currentReadIndex]); }) }) nextBtn.addEventListener('click', () => { currentReadIndex++; if (currentReadIndex >= allRows.length) { console.log('全部行读取完成'); nextBtn.disabled = true; return; } console.log(`第${currentReadIndex + 1}行数据:`, allRows[currentReadIndex]); }) </script> </body>
- 读取指定行直接用
allRows[行号-1]即可,比如读第5行就取allRows[4] - 需要跳过表头的话直接从下标1开始读取即可
方案2:大文件场景,流式解析避免全量加载
如果处理的Excel文件体积较大,全量解析会占用过高内存,可以直接用库自带的rowHandler配置,在解析过程中每解析完一行就返回单行数据,不需要等整个文件解析完成,也不会缓存全量数据:
input.addEventListener("change", function (){ readXlsxFile(input.files[0], { // 每解析完一行就触发该回调,row就是当前行的数组数据 rowHandler: (row) => { console.log('读取到单行数据:', row); // 在这里写单行处理逻辑即可 } }).then(() => { console.log('整个文件解析完成'); }) })
注意:两种方案返回的单行数据都是数组结构,数组的每一项对应当前行的一列单元格值,比如
row[0]就是当前行第一列的值。
内容的提问来源于stack exchange,提问作者BKD
相关产品推荐
相关产品推荐

