使用xlsx-populate解析文件时出现工作表数据错位问题求助
Excel内部工作表索引与显示顺序不匹配:部分手动编辑或第三方工具生成的Excel文件,其工作表的内部存储索引和界面显示顺序不一致。xlsx-populate默认按内部索引顺序读取工作表,而非你在Excel里看到的排序。比如你看到的sheet1,内部可能对应第二个工作表,导致读取时数据错位。可以执行
workbook.sheets()打印所有工作表名称,对比返回顺序和界面显示顺序是否一致。工作表命名异常:若文件存在重名工作表,或工作表名称包含特殊字符、不可见字符,xlsx-populate在匹配工作表时可能出现逻辑错误,导致读取到错误的表数据。检查所有工作表的名称,确认无重复或异常命名。
Excel文件XML结构损坏:xlsx本质是压缩的XML集合,核心文件
xl/workbook.xml负责存储工作表的关联关系。如果该文件的<sheets>节点中,<sheet>的r:id指针指向了错误的工作表XML文件(比如r:id="rId1"错误关联到sheet2.xml),就会引发数据错位。可将xlsx改后缀为.zip解压,查看xl/workbook.xml和xl/worksheets目录下的文件对应关系。xlsx-populate版本兼容性问题:若近期更新了库版本,新版本对特殊Excel格式的处理逻辑可能发生变化,导致读取顺序异常。可回退到之前能正常解析的版本测试,或查看版本更新日志排查相关变更。
隐藏工作表干扰:文件中若存在隐藏工作表,且这些表的内部索引排在可见工作表之前,xlsx-populate读取时会包含隐藏表,导致你认为的sheet1实际是第二个可见表。可使用
workbook.sheets({ visible: true })仅获取可见工作表,检查顺序是否正确。
内容的提问来源于stack exchange,提问作者ESI

