表格B:系统规范表格
表格A:商家提供表格
需求:
1、将表格A中的品名与表格B的规范商品名称进行匹配
示例:将表格A中的乳黄瓜与表格B中的乳黄瓜进行匹配
```
import xlwings as xw
'''写一个函数,该函数需要四个参数,有单价的表格路径,无单价的表格路径,有单价表格的数据范围无表头,无单价表格数据范围无表头'''
def makeprice(pathA,pathB,Arange,Brange):
with xw.App(visible=False) as app:
wb_A= app.books.open(pathA)
wb_B= app.books.open(pathB)
sht_A = wb_A.sheets[0]
sht_B = wb_B.sheets[0]
print(sht_A.range(Arange).value)#打印结果:[['乳黄瓜', 13.98], ['黄瓜', 11.98], ['旱黄瓜', 15.16]]
print(sht_B.range(Brange).value)#打印结果:[['黄瓜', None, 200.0], ['黄瓜', None, 450.0], ['旱黄瓜', None, 500.0], ['乳黄瓜', None, 1000.0], ['乳黄瓜', None, 500.0], ['旱黄瓜', None, 800.0]]
#接下来通过循环确定品名相同的产品,然后计算单价,按照单价都是"元/500g"计算;
listA=sht_A.range(Arange).value
listB=sht_B.range(Brange).value
for dataB in listB:
for dataA in listA:
if dataB[0].startswith(dataA[0]):#如果B表品名从开始就包含A表品名
dataB[1] = (dataA[1]/500)*dataB[2]#按照500g算出每克价格,再乘以B表中的克数,算出单价
print(listB)#此时价格匹配完成
sht_B.range(Brange).value=listB#完成表格赋值
wb_B.save()
print("匹配完成")
makeprice("A.xlsx","B.xlsx","A2:B4","A2:C7")
```看明白以后请去掉注释,避免复制格式错误
既然是在excel里操作,还是推荐用vba的方式来做。具体的vba程序可以交流
import xlwings as xw
def makeprice(pathA,pathB,Arange,Brange):
with xw.App(visible=False) as app:
wb_A= app.books.open(pathA)
wb_B= app.books.open(pathB)
sht_A = wb_A.sheets[0]
sht_B = wb_B.sheets[0]
listA=sht_A.range(Arange).value
listB=sht_B.range(Brange).value
for dataB in listB:
for dataA in listA:
if dataB[0].startswith(dataA[0]):#如果B表品名从开始就包含A表品名
dataB[1] = (dataA[1]/500)*dataB[2]#按照500g算出每克价格,再乘以B表中的克数,算出单价
print(listB)#此时价格匹配完成
sht_B.range(Brange).value=listB#完成表格赋值
wb_B.save()
print("匹配完成")
# 如果参数中路径填不好,可以把该文件放到两个表格的目录中运行,但是文件名要写对,建议测试的时候用副本测试。
makeprice("A.xlsx","B.xlsx","A2:B4","A2:C7")
有一说一,原始表格里都给你重量了。用excel的宏录取就行,比python还简单。
大致就是:
1、建立表B,sheet1导入商家表格
2、录制宏,输出在sheet2
优点是,超简单,输出格式可以随心编辑。
但是我还是给你一个python 最简单的写法。
import pandas as pd
df=pd.read_excel('d:/test2.xlsx')
df['商品名称']=df['商品名称'].str.split('约',expand=True)[0].str.strip()
dictt=dict(zip(df['品名'],df['零售价']))
df['匹配零售价']=(df['商品名称'].map(dictt))*df['重量(g)']/500
df.to_excel('d:/out.xlsx')
直接用pandas读取excel,然后写一个匹配函数,两个excel的数据匹配一下,再合并成一个数据表输出就行了吧。还是直接要封装好的exe小工具
excel vlookup 大法用起来
这里是Python自动化操作的全部内容:https://blog.csdn.net/u014779536/article/details/102906895
请问这是两个excel文件吗
https://yunhua.blog.csdn.net/article/details/122844763?spm=1001.2014.3001.5502
可以参考这篇博文,希望对你有帮助
楼上给代码给方式都有,而我要给你的是人,
你可能不会录制宏,
你可能不会python调试,
但是有问题可以来交流!
这个才是可以及时帮到你的核心!
兄弟你说明白点呗,你要是不会代码执行我可以给你打包exe
建议学习一下pandas库。