我正在参加「掘金·启航计划」
许久不联系,忽然找你,那就是有事;中文吃饭收到姐的微信,帮我把两个表格合并一下;好的,吃了饭弄;真的就合并这么简单吗?
需求
有两个表格,一个表格中有银行卡号、姓名余额(700多条数据);另一个表格中有银行卡号和商户编号,表格一中的银行卡号在表格二中可能没有,表格二中有的银行卡号表格一中可能没有;目的是要将表格二中的商户编号对应到表格一中
解决方法
-
如果一个一个对应肯定不显示,本人对表格的公式也不熟悉,所以只能想到用代码解决
-
解决思路:
a. 如果表格的数据都是json就好了,遍历一下找到对应银行卡号,set一个商户编号字段就好了撒
b. 表格转json:能想到csv文件可以转json,表格可以导出为csv文件
c. 处理之后再将json文件转为csv文件,问题就解决了撒
几个注意的点和未解决的疑问:
- 表格中的表头不能用中文,里面的中文会乱码(没有找到解决方法)
- 里面的名字是中文也会乱码,已经使用了utf-8
使用node将csv文件转为json
- 使用npm init初始化包
- 安装csvtojson和fs,npm install csvtojson --save-dev、npm install fs--save-dev
- 写上代码
- 执行node csvToJson.js
const curDirPath = "E:/test/csv"
const csv=require('csvtojson');
var fs = require('fs');
fs.readdir(curDirPath, (err, files) => {
files.forEach(fileName => {
csv()
.fromFile(`${curDirPath}/${fileName}`)
.then((jsonObj)=>{
jsonObj = JSON.stringify(jsonObj);
let jsonFileName = fileName.replace(/.{1}[a-z]{1,}$/, ".json");
fs.writeFile(`./json/${jsonFileName}`, jsonObj, 'utf-8', function(err) {
console.log("转换成功");
});
})
});
});
使用js处理数据,并且导出成json文件
- 这一步对于程序员来说就很简单了撒
- node中使用require导入文件
- 循环一下添加一个属性
- 使用writeFile导出数据为json文件
const yye = require('./json/9yye.json');
const yhkh = require('./json/hfykk.json');
var fs = require('fs');
yye.forEach((item)=>{
const findItem = yhkh.find((yhkh)=>{
return yhkh.yhkh === item.yhkh
})
if(findItem){
item.shbh = findItem.shbh
}
})
const content = JSON.stringify(yye,null,'\t')
fs.writeFile('./csv1/result.json',content,function () {
console.log('创建成功')
})
再将json数据转换成csv文件
安装json2csv
let fs = require('fs');
const curDirPath = 'E:/test1/json2';
const Json2csvParser = require('json2csv').Parser;
fs.readdir(curDirPath, (err, files) => {
files.forEach(file => {
fs.readFile(curDirPath + `/${file}`, 'utf-8', (err, data) => {
let keyArr = [];
data = JSON.parse(data);
for(let i in data) {
keyArr.push(Object.keys(data[i]));
}
let keyArrSort = keyArr.sort((a, b) => {
return b.length - a.length
})
let fields = keyArrSort[0];
const json2csvParser = new Json2csvParser({ fields });
const csv = json2csvParser.parse(data);
let csvFileName = file.replace(/.{1}[a-z]{1,}$/, ".csv");
fs.writeFile(`./csv1/${csvFileName}`, csv, function(err) {
console.log("转换成功");
});
});
});
});
文件目录如下
最后
偶尔生活中出现一个小插曲,能够用自己的知识帮助到别人(让不在这个行业的人觉得我们用代码还是能干挺多事的),还是挺开心的
祝愿每一个看到文章的小伙伴天天开心~身体健康