使用的库为:node-xlsx
文档地址:https://www.npmjs.com/package/node-xlsx
我们的网页经常需要嵌入第三方的播放器,这个播放器需要取到视频的id才可以播放,但上传完视频只会得到视频链接,每次还需要自己根据视频链接去解析出视频id。
于是基于node-xlsx封装了一个解析excel内容并生成另一个excel表的小插件。根据需要自行替换表格数据解析(filter)部分即可。
/**
* @author AmsWait
* @description
* 快速导出压缩包 需要安装依赖 npm install node-xlsx --save
* 这个库的文档地址 https://www.npmjs.com/package/node-xlsx
*
* @example 将需要导出的目录添加到target数组中 命令行执行 node export-zip.js 即可
* @version 20210723
*/
const fs = require('fs'),
xlsx = require('node-xlsx'),
os = require('os'),
homedir = os.homedir() + '/Desktop/',
outputName = 'vid对应表.xlsx';
// 读取文件
const fileName = 'vid.xls';
const workSheetsFromBuffer = xlsx.parse(fs.readFileSync(homedir + fileName));
/**
* 解码base64字符
* @param { String } str base64字符串
* @returns { String } 解码出的字符串
*/
const decodeBase64 = str => {
let decoder = Buffer.from(str, 'base64')
return decoder.toString();
}
/**
* 过滤表格
* @param {*} obj 表格数据对象
* @returns 过滤后的表格数据对象
*/
const filter = (obj) => {
return obj.map((currentValue, index) => {
let cache = currentValue.data.map((v, i) => {
let flag = v.find(ele => {
return ele && ele.indexOf('sohu') != -1
})
if (flag) {
let vid = flag.split('/');
vid = decodeBase64(vid[vid.length - 1]).split('/');
vid = vid[vid.length - 1].replace('.shtml', '');
let newArray = [v[0], vid];
return v = newArray;
}
})
return {
name: currentValue.name,
data: cache.filter(ele => !!ele)
}
})
};
// wch为设置列宽度
const buffer = xlsx.build(filter(workSheetsFromBuffer), { '!cols': [{ wch: 50 }, { wch: 50 }] });
//生成excel
fs.writeFile(homedir + outputName, buffer, (err) => {
if (err) throw err;
console.log(`
--------- ---------生成完毕--------- ---------
请在桌面查找 ${outputName}
---------如需配置生成路径或文件名,请配置output---------
`);
});
示例数据
第4届 预选赛 7.22 | |||||
---|---|---|---|---|---|
比赛队伍 | 场次 | 大区 | 优酷 | 搜狐 | 腾讯 |
达到VS雷霆 | 14区 | https://v.youku.com/v_show/id_XNTE4NDc3MDg2NA==.html | https://tv.sohu.com/v/dXMvMzM0NzQwNDMyLzI3NDA2MTI0OS5zaHRtbA==.html | https://v.qq.com/x/page/v3262bq24do.html | |
繁莹真好看吖VS弟弟 | 14区 | https://v.youku.com/v_show/id_XNTE4NDc4OTUyNA==.html | https://tv.sohu.com/v/dXMvMzM0NzQwNDMyLzI3NDA3MTEzOS5zaHRtbA==.html | https://v.qq.com/x/page/k3262fr8iio.html | |
天下つ无双VS我家傻妮最美 | 14区 | https://v.youku.com/v_show/id_XNTE4NDc4OTUyNA==.html | https://tv.sohu.com/v/dXMvMzM0NzQwNDMyLzI3NDA3MTI5NS5zaHRtbA==.html | https://v.qq.com/x/page/u3262wa9ejt.html |
我的个人公众号:归园田居 每日分享前端知识与资讯~