最近发现做办公自动化表格匹配的时候还是csv格式的文件最快、效率是最高的
今天接到一个需求就是大致内容之这样的
1、给我一张表格直邮一列A列,内容是运单号
2、需要用相同的单号去另外一张表格匹配数据
3、其实就是Excel中的常见的vlookup
但是想要匹配的表格有几十个,所以这样你还觉得用vlookup方便么
![在这里插入图片描述](https://img-blog.csdnimg.cn/5c6aef491f8c4477b0806ea139093b43.png)
解决方案
1、将想要匹配的表格(Excel转换成CSV),如果你的表格本身就是csv可以跳过此步骤
文件夹【数据源】,作用:存放你想要转换csv的表格——请提前创建好
文件夹【数据源(csv)】,作用:存放你转换好之后的csv文件——请提前创建好
代码
import os,time
import pandas as pd
def xlsx2csv_mh():
for f in os.listdir("./数据源/"):
t1 = time.time()
data = pd.read_excel("./数据源/" + f, index_col=0)
data.to_csv("./数据源(csv)/" + f + '.csv', encoding='utf-8')
print(f"{
f}转换完成......")
t2 = time.time()
print(t2 - t1)
xlsx2csv_mh()
2、 做匹配项,保存为json文件
我做的匹配项可一键多值,就是如:A列作为建:[B列+C列+D列。。。],以这样的形式
如图,我就想以C列为键,G列、I列、J列为值
![在这里插入图片描述](https://img-blog.csdnimg.cn/d26e95eeec0e41ecb7b191df69594b76.png)
读取上一步转换好csv的文件夹
list_a.append((row[2],row[6]+"="+row[8]+"="+row[9]))
,这行就是我做的列表,row[2]就是键,row[6]+“=”+row[8]+“=”+row[9],这个就是值,中间我用=等于号隔开了
文件夹【json文件】,作用:存放做好的json文件——请提前创建好
代码(接上一步):
import json
import os
from collections import defaultdict
import csv
for f in os.listdir('./数据源(csv)/')[:1]:
list_a = []
d = defaultdict(list)
with open('./数据源(csv)/'+ f, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
list_a.append((row[2],row[6]+"="+row[8]+"="+row[9]))
for key, value in list_a:
d[key].append(value)
with open(f"./json文件/{
f}.json","w",encoding="utf-8") as f_w:
f_w.write(json.dumps(d,ensure_ascii=False))
print(f"{
f},转换json成功")
查看做好的json文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d110b0b97d140b58b4538990800169a.png)
读取json,进行测试
代码
with open("./json文件/10月.xlsx.csv.json","r",encoding="utf-8")as f:
res = json.load(f)
print(res['SF16xxxxxxx'])
成功!!
![在这里插入图片描述](https://img-blog.csdnimg.cn/a34e87221eb5442881dfcbd4a2d5e239.png)
好了,分享结束,希望能够帮助到你
更多关于办公自动化的知识,请关注我吧
更多关乎Excel操作请关注我的专栏吧
![在这里插入图片描述](https://img-blog.csdnimg.cn/8cc53ed84e194af7bf29c0fee5f1ecc3.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/433808e34ec947d3a39a8951f0238b06.png)