最近发现做办公自动化表格匹配的时候还是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 csvfor 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操作请关注我的专栏吧