今天突然间想起来用node如何操作excel,记得之前用Java的poi操作excel,感觉特别爽,计算机代替人的工作,非常有用,所以决定摸索一下。
在网上找了各种模块,有导出的,有导入的,有转为json的。觉得靠谱的就两种方法:
1、stackoverflow中,通过类csv(用tab代替,)来转换,保存为xls。以fs为基础。这种方法生成xls格式,不能使用xlsx,由于我电脑上没有07版,所以这种不靠谱。
2、node-xlsx,可以读写xlsx的格式:
//读出 var xlsx=require('node-xlsx'); var obj = xlsx.parse('fs.xlsx'); //第一个工作表的数据 var data = obj.worksheets[0].data; //列数 var maxCol = obj.worksheets[0].maxCol; //行数 var maxRow = obj.worksheets[0].maxRow; for(var i=0;i<maxRow;i++) { console.log("第"+(i+1)+"行的数据:"); for(var j=0;j<maxCol;j++) { console.log(data[i][j].value); } }
// 解析 新版 写法
var obj = xlsx.parse(uploaded_path);
// 二维数组
var data = obj[0].data;
node-xlsx 0.11.0
const result = [[1, 2, 3], [true, false, null, 'sheetjs'], ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'], ['baz', null, 'qux']]; var buffer = xlsx.build([{name: "sheetname", data: result}]); // Returns a buffer fs.writeFile(path.resolve('./public/data/result.xlsx'),buffer,function(err){ if(err) return console.error(err); console.log('保存文件成功'); });
新版node-xlsx写入采用buffer的形式;
path.resolve(): 参数是绝对路径;
不需要新建result.xlsx;