nodejs讀取excel內容批量替換並生成新的html和新excel對照文件

由於廣告投放須要作一批對外投放下載頁面,因爲沒有專門負責填充頁面的編輯同窗作,只能前端來作了,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 目錄裏面是生成後的文件

相關文章
相關標籤/搜索