nodejs读取excel内容批量替换并生成新的html和新excel对照文件
因为广告投放需要做一批对外投放下载页面,由于没有专门负责填充页面的编辑同学做,只能前端来做了,
拿到excel看了一下,需要生成200多个文件,一下子懵逼了。
这要是来回复制粘贴太low了
正好最新用nodejs做过抓取喜马拉雅mp3内容,感觉还挺方便。
于是写个nodejs批处理试试吧,经过几个小时,果然成功了,1秒生成,太爽了。
主要是依赖node-xlsx 模块读取和写入excel,
涉及核心代码如下:
//声明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.zip
/data/目录里面有说明文件
使用方法:
1.确保已安装node环境
2. 打开本目录命令行执行: npm i 安装运行模块(如果安装了npm 淘宝镜像,可以使用cnpm i )
3.命令行执行 node app.js 后1秒批量生成。
4. data/target.xlsx是生成html后的excel对照文件,build 目录里面是生成后的文件
nodejs读取excel内容批量替换并生成新的html和新excel对照文件的更多相关文章
- Shell实现文件内容批量替换的方法
在Linux系统中,文件内容的批量替换同Windows平台相比要麻烦一点.不过这里可以通过Shell命令或脚本的方式实现批量替换的功能. 笔者使用过两个命令:perl和sed ,接下来会对其做出说明. ...
- 帝国cms内容批量替换
方法一:栏目-其他相关-批量替换字段值 方法二:通过sql替换 UPDATE phome_ecms_news SET body=REPLACE(body,'原来','现在')
- Advanced Find and Replace(文件内容搜索替换工具)v7.8.1简体中文破解版
Advanced Find and Replace是一款文件内容搜索工具,同时也是文件内容批量替换工具.支持通配符和正则表达式,方便快捷强大! 显示中文的方法:第二个菜单-Language-选 下载地 ...
- SqlServer表和excel数据批量复制方法
SqlServer表和excel数据批量复制方法 一.SqlServer表数据复制到excel方法: 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键“复制”(如果需要表字段名称,则 ...
- 个人永久性免费-Excel催化剂功能第101波-批量替换功能(增加正则及高性能替换能力)
数据处理无小事,正如没有人活在真空理想环境一下,在数据分析过程中,也没有那么真空理想化的数据源可以使用,数据处理占据数据分析的80%的时间,每一个小小的改善,获益都良多.Excel查找替换,有其局限性 ...
- 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容
在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...
- 如何利用Excel快速批量生成想要的代码
如何利用Excel快速批量生成想要的代码 使用场景 在HTML DOM Video 对象这个页面 我想要将所有的中文描述和对应的属性(共32个属性)打印出来--console.log(descript ...
- excel 批量替换换行符
在excel批量替换换行符操作步骤: 全选需要查找换行符的范围 CTRL+H调出查找和替换 在查找内容内输入"ctrl+enter"两个组合键 点击查找全部即可. 在excel中输 ...
- perl命令批量替换文件内容
转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...
随机推荐
- 前端 初级篇(HTML)
HTML 概述: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就 ...
- PHP下使用Redis消息队列发布微博
phpRedisAdmin :github地址 图形化管理界面 git clone [url]https://github.com/ErikDubbelboer/phpRedisAdmin.git[ ...
- 安装MySQL的详细步骤
安装步骤如下: 1.打开网址:http://www.mysql.com/ ↓ 2.选择“Download”->“Windows”(此安装步骤只是在Window10 中进行,如有需要,其他系统可参 ...
- 3D图形学理论入门指南
转:http://gad.qq.com/article/detail/35096 介绍 当我还小的时候,我曾以为计算机图形学是最酷的玩意儿.但是随即我认识到,学习图形学——创建那些超级 ...
- Emgu在引用openCV时提示:无法加载 DLL“opencv_core2410”: 找不到指定的模块。
在引用开源代码openCV时发现了如下问题: 无法加载 DLL“opencv_core2410”: 找不到指定的模块. (异常来自 HRESULT:0x8007007E). 解决方法如下: 将Emgu ...
- libstdc和glibc的一些共享库问题
1./usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决 原因是没有GLIBCXX_3.4.15版本,或是更高的版本输入命令 ...
- Oracle创建新用户并将某一用户的表导进来
一.建立测试账号 进入sqlplus(以管理员身份) sqlplus / as sysdba; create user user1 identified by user1; //创建用户名并指定密码 ...
- transition失效问题
关于transition,css教程中有一个很简单的例子: <!DOCTYPE html> <html> <head> <meta charset=" ...
- python爬虫之html解析Beautifulsoup和Xpath
Beautiifulsoup Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.BeautifulSoup 用来解析 HTML 比较简 ...
- OC_NSString、
8月17日NSString 一.字符串的创建 //1.创建常量字符串 NSString *str1 = @"hello world"; NSLog(@"%@", ...