我们在处整理BOM时,有一件比较麻烦的工作,就是要从物料库里找到对应的元器件的物料编码并填入BOM中。我们通常的做法就是在物料库里每种物料逐一搜索,把对应的元器件的物料编码找出来,并填到BOM里。这种工作虽然没什么难度,但是如果BOM的元器件种类很多,有几百种时,那么这个工作量是非常庞大的,人重复的操作几百次,很容易出现错误。如果用有错误的BOM去贴片,那么贴出来的电路板就会存很大的问题,给研发工作带来很多不便。如果是生产的BOM出现错误,那么就是给公司带来巨大的经济损失。那么有没有一种快捷的方法把物料编码快速匹配到BOM里,而且没有错误呢?
上次我们使用VBA解决了这个问题,现在我们使用python来解决这个问题。
这是物料库,里面存放了元器件的规格描述和料号等信息。现在需要从这个物料库找出以下BOM中元器件的料号,并一一对应填写出来。
首先,在pycharm中编写以下代码:
import xlwt
import xlrd
import xlutils.copy
wb1=xlrd.open_workbook('物料库20200831.xls')
wb2=xlrd.open_workbook('bom V01贴片BOM20200828.xlsx')
wp=xlutils.copy.copy(wb2)
ws3=wp.get_sheet(0)
ws1=wb1.sheets()[0]
ws2=wb2.sheets()[0]
nrow1=ws1.nrows
nrow2=ws2.nrows
print (nrow1)
print (nrow2)
for i in range(3,nrow2-1):
if ws2.cell(i, 3).value!='':
for j in range(1,nrow1-1):
#if ws1.cell(j,4).value!='' and ws1.cell(j,4).value==ws2.cell(i,3).value:
if ws1.cell(j, 4).value == ws2.cell(i, 3).value:
ws3.write(i, 1,ws1.cell(j,0).value)
ws3.write(i, 2, ws1.cell(j, 1).value)
wp.save('bom V01贴片BOM20200903.xls')
然后,运行代码,就能得一份新的BOM。里面的元器件已经从物料库中一一对找到了料号,并写在了对应的位置里。
更多脚本可以加群获取。
感兴趣可以点阅读原文加群。