政府采购网上传标书录入报价一览表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | """ 此脚本功能为:解决政府采购网货物采购简化录入多项货物参数重复机械操作,只需一键导入。 操作步骤: 1、在original目录新建 price_data.xlsx,在excel表格编辑好需求录入的数据。 2、打开投标响应客户端,到指定项目制作标书,然后关闭客户端。 3、在投标响应客户端安装目录data文件夹下找到ProConfig.price文件,复制到original目录。 4、运行python文件。 5、打开result/NEW.ProConfig.price 文件,复制内容至投标响应客户端安装目录data文件夹下ProConfig.price文件。 6、打开投标响应客户端,找到报价一览表查看是否录入成功。 7、修改任意价格,再修改回原价,更新总价。 备注:python打包exe pyinstaller --onefile your_script.py """ import json,math,sys,os from openpyxl import load_workbook # 打开excel wb = load_workbook( 'original/price_data.xlsx' ) sheet = wb[ 'price' ] # 读取文件数据 with open ( 'original/ProConfig.price' , 'r' ,encoding = 'utf-8-sig' ) as file : content = json.loads( file .read()) # # 输入总价 # price_total = input('\033[33m' + "请输入总价:" + '\033[0m') # if price_total and price_total.replace('.','').isdigit(): # print('\033[32m' + f"您输入总价为:{price_total}" + '\033[0m') # # 修改总价至content # content['bjylb']['summaryData'][0]['data']= price_total # else: # print('\033[31m' + f"系统没有检测到输入的有效值,程序退出!" + '\033[0m') # sys.exit() # 获取源文件的bodyData数据 bodyData = content[ 'bjylb' ][ 'resultData' ][ 'bodyData' ] # excel表格列码 col_sheet_str = { "standardUnit" : "A" , "goodsOriginPlace" : "B" , "goodsBrand" : "C" , "goodsModel" : "D" , "goodsProducer" : "E" ,} temporary_object = { #初始化临时对象 'sequence' :{ "dataType" : "sequence" , "data_flag" : False , "record_flag" : True , "data" :''}, # 序号 'detailName' :{ "dataType" : "detailName" , "data_flag" : False , "record_flag" : True , "data" :''}, # 商品名称 'numberMeasureUnit' :{ "dataType" : "numberMeasureUnit" , "data_flag" : False , "record_flag" : False , "data" :''}, # 数量 'maxLimitAmountUnit' :{ "dataType" : "maxLimitAmountUnit" , "data_flag" : False , "record_flag" : True , "data" :''}, # 最高限价 'standardUnit' :{ "dataType" : "standardUnit" , "data_flag" : True , "record_flag" : False , "data" :''}, # 报价 'priceModeName' :{ "dataType" : "priceModeName" , "data_flag" : False , "record_flag" : False , "data" :''}, # 报价形式 'goodsOriginPlace' :{ "dataType" : "goodsOriginPlace" , "data_flag" : True , "record_flag" : False , "data" :''}, # 生产地 'goodsBrand' :{ "dataType" : "goodsBrand" , "data_flag" : True , "record_flag" : False , "data" :''}, # 品牌 'goodsModel' :{ "dataType" : "goodsModel" , "data_flag" : True , "record_flag" : False , "data" :''}, # 规格型号 'goodsProducer' :{ "dataType" : "goodsProducer" , "data_flag" : True , "record_flag" : False , "data" :''}} # 生产厂家 # 处理bodyData数据 for index,data in enumerate (content[ 'bjylb' ][ 'resultData' ][ 'bodyData' ]): index = index + 1 row_num = math.ceil(index / 10 ) # 行号 col_num = index - (row_num - 1 ) * 10 # 列号 print (index, data) print ( '行号:' , row_num, '列号:' , col_num) if data[ 'dataType' ] = = temporary_object[data[ 'dataType' ]][ 'dataType' ]: # 处理报价数据 if temporary_object[data[ 'dataType' ]][ 'record_flag' ]: # 将data值存入temporary_object v = data[ 'data' ] temporary_object[data[ 'dataType' ]][ 'data' ] = v print ( '\033[32m' + f "已将【{data['dataType']}:{v}】值存入temporary_object" + '\033[0m' ) if temporary_object[data[ 'dataType' ]][ 'data_flag' ]: # 生成excel表格单元格坐标 cell_num = col_sheet_str[data[ 'dataType' ]] + str (row_num) # 报价的时候处理数据 if data[ 'dataType' ] = = "standardUnit" : # 校验报价是否高于限价 data_insert = sheet[cell_num].value if data_insert < = int ( float (temporary_object[ 'maxLimitAmountUnit' ][ 'data' ])): data_insert = str (data_insert) # 报价为int转str print ( '\033[32m' + f "报价【{data_insert}】校验通过" + '\033[0m' ) else : print ( '\033[31m' + f "【序号:{temporary_object['sequence']['data']},商品名称:{temporary_object['detailName']['data']}】报价高于限价,请修改。" + '\033[0m' ) sys.exit() else : data_insert = sheet[cell_num].value print ( "data_insert:" ,data_insert) data[ 'data' ] = data_insert print (data) # 写入数据到文件 file_path = "result/NEW.ProConfig.price" if os.path.exists(file_path): os.remove(file_path) print ( '\033[32m' + "成功删除历史文件【NEW.ProConfig.price】" + '\033[0m' ) with open (file_path, "a" , encoding = 'utf-8' ) as file : file .write(json.dumps(content, ensure_ascii = False )) print ( '\033[32m' + "写入数据到新文件成功。Done." + '\033[0m' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix