由于广告投放须要作一批对外投放下载页面,因为没有专门负责填充页面的编辑同窗作,只能前端来作了,html
拿到excel看了一下,须要生成200多个文件,一会儿懵逼了。前端
这要是来回复制粘贴太low了node
正好最新用nodejs作过抓取喜马拉雅mp3内容,感受还挺方便。npm
因而写个nodejs批处理试试吧,通过几个小时,果真成功了,1秒生成,太爽了。app
主要是依赖node-xlsx 模块读取和写入excel,ui
涉及核心代码以下:this
//声明excel文档操做对象 var xlsx = require('node-xlsx'); var sheets = xlsx.parse('./data/wdcb.xlsx');//获取到全部sheets // 声明文件操做系统对象 var fs = require('fs');//加载文件操做模块 var path=require('path');//加载路径处理模块 String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); } var Num = 1;//默认从第二条数据开始,通常第一条数据是标题 /** * 读取excel某一条数据,传参调用html建立方法 * @param {[type]} num 第几条数据 * @return {[type]} [description] */ function readExcel(num){ var i = num; var data = sheets[0]['data']; if(data.length == i){ console.log("生成成功!"); //fs.writeFile('./data/target.xlsx',sheets,function(error){}); var buffer = xlsx.build(sheets); fs.writeFileSync('./data/target.xlsx',buffer,{'flag':'w'}); //生成excel return ; } var tmp = data[i][1];//文件名 var tar = './build/' + tmp + '.shtml';//生成目标路径 var link = data[i][4];//下载连接 var copyRight = data[i][5]; if(tmp){ createHtml(tar,link,copyRight,num); } } /** * 根据参数建立html文件 * @param {[String]} tar 生成目标文件路径 * @param {[String]} repLink 下载连接 * @param {[String]} copy 版权名称 * @param {[num]} num 第几条数据 * @return {[type]} */ function createHtml(tar,repLink,copy,num){ fs.readFile('./index.shtml','utf8',function(err,files){//读取模板文件 var result = files.replace(/#{4}/g, repLink);//替换连接 result = result.replace(/xxxxxx/g, copy);//替换底部版权 fs.writeFile(tar, result, 'utf8', function (err) { if (err) { fs.writeFile('./err-log.txt',err,function(error){});//生成错误,则写入日志 return console.log(err) } //修改已读取excel数据,为存储对照excel准备 sheets[0]['data'][Num][6] = 'http://www.xxxxxxx.com/events/wdcb/201811/load/' + tar.replace("\.\/",""); Num++; readExcel(Num); }); }) } //开始调用 readExcel(Num);
项目打包以下:https://files.cnblogs.com/files/zhidong123/node-excel-html.zipspa
/data/目录里面有说明文件操作系统
使用方法:prototype
1.确保已安装node环境2. 打开本目录命令行执行: npm i 安装运行模块(若是安装了npm 淘宝镜像,可使用cnpm i )3.命令行执行 node app.js 后1秒批量生成。4. data/target.xlsx是生成html后的excel对照文件,build 目录里面是生成后的文件