使用DanfoJS读取本地XLSX文件报错,CSV可正常读取求助
Node.js中DanfoJS读取Excel文件报错的解决方法
问题重现
使用DanfoJS读取本地CSV文件正常,但读取同路径.xlsx文件时触发错误:
Error: ParamError: File not supported. file must be a url or an input File object
涉事代码:
const fileLocation = '/Users/riekus/Documents/notebook (analytics)/E/TIV data /test.xlsx' let df2 = await dfd.readExcel(fileLocation) print(df2);
核心原因
DanfoJS的readExcel和readCSV在Node.js环境下的参数逻辑存在差异:
readCSV针对Node环境做了适配,直接支持本地文件路径作为输入readExcel默认适配浏览器场景,仅接受网络URL或浏览器端File对象,无法直接识别Node环境的本地文件路径,这就是报错的根源。
解决方法
在Node.js中需要先通过fs模块将本地Excel文件读取为Buffer,再传入readExcel解析:
- 引入依赖模块
const fs = require('fs').promises; const dfd = require('danfojs-node');
- 读取文件并解析
const fileLocation = '/Users/riekus/Documents/notebook (analytics)/E/TIV data /test.xlsx'; // 读取本地文件为Buffer const excelBuffer = await fs.readFile(fileLocation); // 传入Buffer解析,可指定工作表(注意语法闭合大括号) let df2 = await dfd.readExcel(excelBuffer, { sheet: 'Sheet1' }); df2.print();
额外修正点
- 你尝试指定工作表的代码存在语法错误:
{sheet: 'Sheet1')末尾误用了圆括号,需修正为{ sheet: 'Sheet1' } - 注意文件路径的大小写:CSV路径用了小写
e/,Excel用了大写E/,部分系统(如Linux)区分路径大小写,可能因此找不到文件,建议保持路径大小写一致
内容的提问来源于stack exchange,提问作者userRR
相关产品推荐
相关产品推荐

