使用xlsx JS包读取.xlsx文件时如何跳过前8行表头?
解决xlsx库跳过前8行表头的问题
你当前代码里的header: 8用法有误,这个参数的作用是将第8行(以0为起始索引)作为数据的表头,而非跳过前8行。要实现跳过前8行的需求,分两种场景处理:
场景1:不需要表头,直接读取前8行之后的所有数据(每行转为数组)
使用range参数指定起始读取的行索引(0-based),配合header: null即可:
import { readFile, utils } from "xlsx"; const workbook = readFile('foobar.xlsx'); // 注意:SheetNames[1]是取第二个工作表,确认是你需要的目标表 const worksheet = workbook.Sheets[workbook.SheetNames[1]]; const data = utils.sheet_to_json(worksheet, { defval:"", header: null, range: 8 });
这里range: 8表示从第8行(对应Excel界面里的第9行)开始读取所有数据,header: null会把每行数据转为数组格式。
场景2:将第8行作为表头(跳过前7行,用第8行作为对象键名)
如果你的需求是跳过前7行,把第8行作为数据的表头(每行转为以表头为键的对象),那header:8的逻辑是正确的,但需要修正工作表的获取方式——你之前的代码里workbook.SheetNames[1]是工作表名称,需要用workbook.Sheets[工作表名称]来获取实际的工作表对象:
import { readFile, utils } from "xlsx"; const workbook = readFile('foobar.xlsx'); const worksheet = workbook.Sheets[workbook.SheetNames[1]]; const data = utils.sheet_to_json(worksheet, { defval:"", header: 8 });
另外要注意:xlsx库中的行索引从0开始,Excel界面里的第1行对应库中的索引0,所以前8行(Excel里的1-8行)对应库中的索引0-7,可根据实际需求调整参数。
内容的提问来源于stack exchange,提问作者Huckleberry Carignan
相关产品推荐
相关产品推荐

