1. # -*- coding: utf-8 -*-
    2. # powers 20210512 GTK
    3. import pandas as pd
    4. import os
    5. #os.environ['MATPLOTLIBDATA'] = 'D:/Program Files/Python36/Lib/site-packages/matplotlib/mpl-data'
    6. #import numpy as np
    7. #坐标文件
    8. road_ax = input('please input positon_info xlsx:')
    9. layer_data = pd.DataFrame(pd.read_excel(format(road_ax), sheet_name=0))
    10. #原始bom
    11. road_bom = input('please input bom_data xlsx:')
    12. bom_data = pd.DataFrame(pd.read_excel(format(road_bom), sheet_name=0))
    13. # 根据坐标文件获取top and bot信息
    14. layer_dict = {}
    15. i = 0
    16. while i < layer_data.shape[0]:
    17. layer_dict[layer_data.iloc[i,0]] = layer_data.iloc[i,1]
    18. i = i + 1
    19. #新建 bot and top 格式BOM
    20. data_bom_goertek_bot = pd.DataFrame(columns=(
    21. 'Item', 'GTK_PART_NUMBER', 'Name', 'Describe',
    22. 'MF_PART_NUMBER', 'MANUFACTURER', 'Quantity', 'Reference', 'Layer'))
    23. data_bom_goertek_top = pd.DataFrame(columns=(
    24. 'Item', 'GTK_PART_NUMBER', 'Name', 'Describe',
    25. 'MF_PART_NUMBER', 'MANUFACTURER', 'Quantity', 'Reference', 'Layer'))
    26. #print(bom_data.shape[0])
    27. j = 0
    28. bot_reference = []
    29. top_reference = []
    30. while j < bom_data.shape[0]:
    31. # 获取原始bom 数据
    32. reference = bom_data.iloc[j,7]
    33. reference = reference.split(',')
    34. Item = bom_data.iloc[j,0]
    35. GTK_PART_NUMBER = bom_data.iloc[j,1]
    36. Name = bom_data.iloc[j,2]
    37. Describe = bom_data.iloc[j,3]
    38. MF_PART_NUMBER = bom_data.iloc[j,4]
    39. MANUFACTURER = bom_data.iloc[j,5]
    40. try:
    41. # 区分 bot and top
    42. for id in reference:
    43. if layer_dict[id] == 'YES':
    44. bot_reference.append(id)
    45. elif layer_dict[id] == 'NO':
    46. top_reference.append(id)
    47. else:
    48. pass
    49. # 根据 bot and top 制作BOM_data
    50. if len(bot_reference) > 0:
    51. Quantity = len(bot_reference)
    52. bot = ','.join(bot_reference)
    53. data_bom_goertek_bot.loc[data_bom_goertek_bot.shape[0]] = (Item,GTK_PART_NUMBER,Name,Describe,MF_PART_NUMBER,MANUFACTURER,str(Quantity),bot,'BOT')
    54. if len(top_reference) > 0:
    55. Quantity = len(top_reference)
    56. top = ','.join(top_reference)
    57. data_bom_goertek_top.loc[data_bom_goertek_top.shape[0]] = (Item,GTK_PART_NUMBER,Name,Describe,MF_PART_NUMBER,MANUFACTURER,str(Quantity),top,'TOP')
    58. j = j + 1
    59. bot_reference = []
    60. top_reference = []
    61. except Exception as e:
    62. print(e)
    63. print('error,please check the positon_info and BOM_DATA')
    64. break
    65. # 合并bot and top bom_data
    66. data_bom_goertek = pd.concat([data_bom_goertek_top,data_bom_goertek_bot])
    67. # 保存bom
    68. try:
    69. with pd.ExcelWriter('bom_top_bot.xlsx') as writer:
    70. data_bom_goertek.to_excel(writer)
    71. writer.save()
    72. print('BOM done,please check the bom,if the script report some error,maybe the bom is not right,thanks')
    73. except Exception as e:
    74. print(e)