表格B:系统规范表格
表格A:商家提供表格
需求:
1、将表格A中的品名与表格B的规范商品名称进行匹配
示例:将表格A中的乳黄瓜与表格B中的乳黄瓜进行匹配
2、将匹配对应的商品名称分别匹配不同的商品重量,并对不同重量的相同商品名称进行零售价自动填充。
示例:表格A中的乳黄瓜零售价13.98元/500g,对应表格B中的乳黄瓜500g、1000g的零售价进行自动填充。
表格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")
```看明白以后请去掉注释,避免复制格式错误