版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37615202/article/details/88286139
前段时间遇到项目上的一个小工作,就是将旧的所有需要的模板导出来。然后改为新的格式并导出到新的表格中。
刚开始遇到的时候心想直接挨个改吧,后来打开一看几百个模板。瞬间死心,所以灵机一动,不如写个脚本自动转一下。。。
然后Google了一下 发现了node-xlsx这个插件,完美。。。
相关的链接:https://www.npmjs.com/package/node-xlsx;
废话不说,上代码。
let fs = require('fs');//引入文件读取模块
let path = require('path');//引入文件读取模块
let xlsx = require('node-xlsx'); //引入node-xlsx模块
let filePath = path.resolve('E:/项目开发-工作/adm-ress/src/adx-confirmed');
let obj = xlsx.parse('C:/Users/Administrator/Desktop/年后打底0227.xlsx');
//[ { name: 'adx打底模板批量输出', data: [ [Array], [Array], [Array] ] } ] 返回表格数据内容
let excelObj = obj[0].data;
let data = [['广告位ID', 'ADX模板ID', '打底素材', '新模板格式代码']];
function arrAdd (arr) {
arr.push(newAdxCode);
data.push(arr);
console.log(data);
}
for (let i in excelObj) {
let arr = [];
let newAdxCode = '';
let value = excelObj[i];
let creatListJson = JSON.parse(value[2]);
arr.push(value[0]);
arr.push(value[1]);
arr.push(value[2]);
fileDisplay(filePath, value[1], creatListJson, arrAdd, arr);
console.log(arr);
}
setTimeout(() => {
let buffer = xlsx.build([{
name: "adx打底模板批量输出(年后new)",
data: data
}]);
fs.writeFile('./adx格式打底模板(new0227).xlsx', buffer, function (err) {
if (err) {
throw err;
};
console.log('Write to xls has finished');
});
}, 30000);
function fileDisplay(filePath, templId, tempJson, arrAdd, arr) {
fs.readdir(filePath, function (err, files) {
if (err) {
console.warn(err)
} else {
files.forEach(function (filename) {
let __dir = path.join(filePath, filename);
fs.stat(__dir, function (eror, stats) {
if (eror) {
console.warn('获取文件stats失败');
} else {
let isFile = stats.isFile();
let isDir = stats.isDirectory();
if (isFile && filename.match(templId)) {
let content = fs.readFileSync(__dir, 'utf-8');
let tempCode = JSON.parse(content);
for (let item in tempJson) {
parseJson(tempCode, item, tempJson[item]);
};
newAdxCode =JSON.stringify(tempCode);
arrAdd(arr);
}
if (isDir) {
fileDisplay(__dir, templId, tempJson, add, arr);
}
}
})
});
}
});
}
function parseJson(jsonObj, jsonkey, jsonval) {
for (let key in jsonObj) {
let element = jsonObj[key];
if (key == 'id' && jsonObj[key] == jsonkey) {
jsonObj.src = jsonval;
}
if (element.length > 0 && typeof (element) == 'object' || typeof (element) == 'object'
) {
parseJson(element, jsonkey, jsonval);
}
}
}
console.log('Server Start, plz wating......');