zoukankan      html  css  js  c++  java
  • 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 目录里面是生成后的文件

  • 相关阅读:
    简要集群复制shell脚本
    git命令
    gitlab部署
    QPS、TPS、并发用户数、吞吐量关系
    Windows admin center
    ftp命令行工具
    ftp ftps sftp
    部署 Nethogs
    smtp imap
    如何在【博客园】通过搜索 博主 昵称 来找到博主?
  • 原文地址:https://www.cnblogs.com/zhidong123/p/9958999.html
Copyright © 2011-2022 走看看