影刀RPA 工程造价自动化:定额套价与预算汇总
作者:林焱
一、什么情况用影刀处理工程预算
建筑造价是一个极其繁琐的数字密集型行业。一个中型工程项目,预算员要从图纸中提取几千行工程量,在造价软件(广联达、斯维尔、品茗)中逐一套定额,再汇总各专业的预算表。手工套价一个项目要耗时一周,大量时间花在"找定额编号→输入工程量→核对单价"这种机械操作上。
影刀RPA可以接管:
- 从Excel工程量清单批量导入到造价软件
- 自动查找并套用定额编号
- 跨专业汇总预算,生成总价对比分析
二、实战一:广联达批量套价
店群矩阵自动化突破运营极限!
广联达是桌面应用(Win32),影刀支持对桌面应用的界面自动化。
操作思路
Step 1:准备工程量清单
Excel格式:序号 | 项目名称 | 定额编号 | 单位 | 工程量
Step 2:启动广联达并打开项目
【启动应用程序】 路径:C:\Program Files\Grandsoft\GBQ5\GBQ5.exe 【等待窗口出现】窗口标题:广联达工程造价软件 【等待加载完成】超时:30秒  【点击菜单】菜单路径:文件 > 打开工程 【选择文件】路径:C:\造价项目\某住宅项目.GBQ5Step 3:批量输入定额条目
importpyautoguiimporttimeforrowin工程量清单:定额编号=row['定额编号']工程量=row['工程量']# 在定额输入行点击新增yingdao.click_element('新增子目按钮')time.sleep(0.3)# 输入定额编号(广联达会自动匹配)yingdao.find_element('定额编号输入框').send_keys(定额编号)pyautogui.press('enter')time.sleep(0.5)# 等待自动匹配完成# 输入工程量yingdao.find_element('工程量输入框').clear()yingdao.find_element('工程量输入框').send_keys(str(工程量))pyautogui.press('tab')time.sleep(0.3)Step 4:保存并导出预算书
【点击菜单】菜单路径:报表 > 导出预算书 【选择格式】Excel 【选择路径】C:\造价项目\预算书_${项目名称}_${今日日期}.xlsx 【点击】导出确认三、实战二:跨专业预算汇总
大型项目分土建、安装、装饰等多个专业,每个专业有独立的预算文件,最终要汇总成一个总概算表。
importpandasaspdimportos# 预算文件目录budget_dir='C:\\造价项目\\各专业预算\\'files=[fforfinos.listdir(budget_dir)iff.endswith('.xlsx')]all_budgets=[]forfileinfiles:专业名=file.replace('预算书_','').replace('.xlsx','')df=pd.read_excel(os.path.join(budget_dir,file),sheet_name='汇总表')# 提取总价total=df[df['项目名称'].str.contains('合计|小计',na=False)]['合价'].sum()all_budgets.append({'专业':专业名,'合计金额(元)':total,'合计金额(万元)':round(total/10000,2)})# 汇总summary_df=pd.DataFrame(all_budgets)summary_df.loc['合计']=summary_df.sum(numeric_only=True)summary_df.to_excel('C:\\造价项目\\总概算汇总.xlsx',index=False)print(f"项目总投资:{summary_df['合计金额(万元)'].sum():.2f}万元")四、实战三:定额单价变化预警
市场价格波动时,定额单价会调整。用影刀定期从当地造价信息网抓取最新价格,对比项目中使用的单价,如有偏差超过5%则发出预警。
temu店群自动化报活动案例
# 从造价信息网抓取最新人工费、材料费yingdao.open_url('http://www.zjjg.gov.cn/price/')# 以某省价格信息网为例yingdao.wait_for_element('table.price-table')latest_prices={}rows=yingdao.find_elements('table.price-table tr')forrowinrows[1:]:# 跳过表头cells=row.find_elements('td')iflen(cells)>=3:latest_prices[cells[0].text]=float(cells[2].text.replace('元',''))# 对比项目中使用的价格foritem_name,project_pricein项目使用价格.items():ifitem_nameinlatest_prices:latest=latest_prices[item_name]diff_pct=abs(latest-project_price)/project_price*100ifdiff_pct>5:print(f"⚠️{item_name}价格偏差{diff_pct:.1f}%,项目价:{project_price},最新价:{latest}")五、踩坑记录
坑1:广联达界面元素不稳定
广联达是老式Win32界面,元素识别依赖窗口句柄,换版本后句柄会变。建议结合截图OCR识别关键按钮位置,而不是只依赖句柄。
坑2:定额编号自动匹配有延迟
输入定额编号后,软件需要1-2秒联网查询或本地匹配,time.sleep(0.3)可能不够,要用等待"工程量输入框变为可编辑状态"来判断。
坑3:Excel格式各省定额不同
全国各地定额体系不一样,四川用"川2015",广东用"粤2018"。Excel读取逻辑要针对目标省份定制,不能通用。
坑4:汇总时要排除暂估价
预算汇总时,材料暂估价不计入工程造价总价,要在Python里显式过滤含"暂估"的行。
适用人群:预算员、造价工程师、咨询公司
难度:⭐⭐⭐⭐(需要了解造价软件操作基础)