最近发现做办公自动化表格匹配的时候还是csv格式的文件最快、效率是最高的
今天接到一个需求就是大致内容之这样的
1、给我一张表格直邮一列A列,内容是运单号
2、需要用相同的单号去另外一张表格匹配数据
3、其实就是Excel中的常见的vlookup
但是想要匹配的表格有几十个,所以这样你还觉得用vlookup方便么
解决方案
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列为值
读取上一步转换好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文件
读取json,进行测试
代码
with open ( "./json文件/10月.xlsx.csv.json" , "r" , encoding= "utf-8" ) as f:
res = json. load( f)
print ( res[ 'SF16xxxxxxx' ] )
成功!!
好了,分享结束,希望能够帮助到你
更多关于办公自动化的知识,请关注我吧
更多关乎Excel操作请关注我的专栏吧