首先通过npm下载xlsx包,他可以帮我们把excel格式的文件转换为我们熟悉的json格式。
exceljs也尝试了下,感觉文档不好找,格式又很头疼(应该对处理excel来说功能更强大)。所以还是选择了友好的xlsx。
npm i xlsx -S
/* 注:-S 为save,即无论是开发环境还是生产环境,都对此包有依赖(都存在);-D 为dev 即只在开发环境依赖*/
引入模块和要处理的文件
let xlsx = require('xlsx'); // 引入模块
let workbook = xlsx.readFile('E:/project/nodeExcel/file/excel01.xlsx'); // 引入要处理的excel绝对路径
然后获取表名:
即同一个excel文件会有n个表,我们需要根据所要操作的选择一个进行处理,代码如下:
let sheetNames = workbook.SheetNames; //获取表名,此处表名如果是知道的话,可以手动赋值
let sheet = workbook.Sheets[sheetNames[0]]; //通过表名得到表
var data =xlsx.utils.sheet_to_json(sheet); //通过xlsx模块将表数据转为JSON数据
// 处理信息
for(let i=0;i< data.length;i++) {
let count = data[i]['沪A账号、深A账号']
if(count){
count = count.toString().split('、')
data[i]['沪A账号'] = count[0]
data[i]['深A账号'] = count[1]
}
delete data[i]['沪A账号、深A账号']
}
let ss = xlsx.utils.json_to_sheet(data); //通过工具将json转表对象
let keys = Object.keys(ss).sort(); //排序 [需要注意,必须从A1开始]
let ref = keys[1]+':'+keys[keys.length - 1]; // 这个是定义一个字符串 也就是表的范围[A1:C5]
let workbookWrite = { // 定义操作文档
SheetNames:['nodejs-sheetname'], //设置表名
Sheets:{
'nodejs-sheetname':Object.assign({},ss,{'!ref':ref}) //表对象[注意表名]
},
}
xlsx.writeFile(workbookWrite,"./excelCopy.xls"); //将数据写入文件
其实我们处理的就是JSON数据,这个对于我们来说就很熟悉了,对象增加一个,表就对应增一列,最后通过模块吧json再转为excel数据,然后导出文件。