因为广告投放需要做一批对外投放下载页面,由于没有专门负责填充页面的编辑同学做,只能前端来做了,

拿到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对照文件的更多相关文章

  1. Shell实现文件内容批量替换的方法

    在Linux系统中,文件内容的批量替换同Windows平台相比要麻烦一点.不过这里可以通过Shell命令或脚本的方式实现批量替换的功能. 笔者使用过两个命令:perl和sed ,接下来会对其做出说明. ...

  2. 帝国cms内容批量替换

    方法一:栏目-其他相关-批量替换字段值 方法二:通过sql替换           UPDATE phome_ecms_news SET body=REPLACE(body,'原来','现在')

  3. Advanced Find and Replace(文件内容搜索替换工具)v7.8.1简体中文破解版

    Advanced Find and Replace是一款文件内容搜索工具,同时也是文件内容批量替换工具.支持通配符和正则表达式,方便快捷强大! 显示中文的方法:第二个菜单-Language-选 下载地 ...

  4. SqlServer表和excel数据批量复制方法

    SqlServer表和excel数据批量复制方法 一.SqlServer表数据复制到excel方法: 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键“复制”(如果需要表字段名称,则 ...

  5. 个人永久性免费-Excel催化剂功能第101波-批量替换功能(增加正则及高性能替换能力)

    数据处理无小事,正如没有人活在真空理想环境一下,在数据分析过程中,也没有那么真空理想化的数据源可以使用,数据处理占据数据分析的80%的时间,每一个小小的改善,获益都良多.Excel查找替换,有其局限性 ...

  6. 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容

    在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...

  7. 如何利用Excel快速批量生成想要的代码

    如何利用Excel快速批量生成想要的代码 使用场景 在HTML DOM Video 对象这个页面 我想要将所有的中文描述和对应的属性(共32个属性)打印出来--console.log(descript ...

  8. excel 批量替换换行符

    在excel批量替换换行符操作步骤: 全选需要查找换行符的范围 CTRL+H调出查找和替换 在查找内容内输入"ctrl+enter"两个组合键 点击查找全部即可. 在excel中输 ...

  9. perl命令批量替换文件内容

    转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...

随机推荐

  1. IE浏览器连不上网,其他浏览器可以

    周末因工作需要,需用IE浏览器.结果发现IE连不上网,而其他浏览器正常上网. 首先排查不是网络连接问题. 又重启了一下网络连接.禁用---->启用. 还是不好使.(最后找到原因是DNS设置问题. ...

  2. dockfile

    dockerfile是对镜像的描述 新建一个dockfile文件 docker inspect

  3. 关于java登录界面

    import java.awt.*; 包含用于创建用户界面和绘制图形图像的所有类.   import javax.swing.*; 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所 ...

  4. Linux环境下的图形系统和AMD R600显卡编程(2)——Framebuffer、DRM、EXA和Mesa简介

    转:https://www.cnblogs.com/shoemaker/p/linux_graphics02.html 1. Framebuffer Framebuffer驱动提供基本的显示,fram ...

  5. 20165101刘天野 2017-2018-2 《Java程序设计》第3周学习总结

    20165101刘天野 2017-2018-2 <Java程序设计>第3周学习总结 编程语言的几个发展阶段 类 构造方法与对象的创建 类与程序的基本结构 参数传值 对象的组合 实例成员与类 ...

  6. Python3.4 用 pip 安装lxml时出现 “Unable to find vcvarsall.bat ”

    我的python版本是Python 3.5 该问题的产生是在windows环境中,python 的 Setup需要调用一个vcvarsall.bat的文件,该文件需要安装c++编程环境才会有.网上的方 ...

  7. Centos6.5安装php5.6.7

    1. 下载 官网:http://php.net/downloads.php wget http://cn2.php.net/get/php-5.6.7.tar.gz/from/this/mirror ...

  8. 添加nginx服务到service的过程

    Linux命令service - 系统服务管理(转) 用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等. ...

  9. 泛型学习第一天:List与IList的区别 (一)

    先看代码: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace L ...

  10. ZSTU 4241 圣杯战争(线段树+经典)

    题意:CS召唤了n个实验怪兽,第i号怪兽在i这个位置出.并把KI召唤出的第i位从者安排在pos(i)处,总共有m位从者. 第i只怪兽有战斗力atk(i), 而i号从者的体力为AP(i).如果从者想要移 ...