合并广联达导出表08的python代码
接到一个项目投标,招标人发出来的表格是广联达导出的excel表格。我一看,好家伙先分四个区域,然后每个区域又有无数个厂房,厂房文件夹下面才有这个区域的广联达表格。
现在我的任务是需要对这些表格内的产品报价。挨个打开填固然是一种办法,但是很容易发生不同表格内的设备价格不一致问题。最好的办法就是先把表格合并,同一种设备的数量累加然后在总表中填写价格,这样就能避免价格不一致问题。
下面是代码,我使用chatgpt生成的,其实不需要懂编程,自己需要干啥告诉它就好:
import pandas as pd
import os
# 初始化一个空的DataFrame来存储所有的数据
all_data = []
#遍历D:\..\python\data\xt文件夹下的所有子文件夹,改成你的文件地址
for root, dirs, files in os.walk('D:\\fsx\\python\\data\\xt'):
for file in files:
#只处理Excel文件,并且跳过以~$开头的临时文件
if (file.endswith('.xlsx') or file.endswith('.xls')) and not file.startswith('~$'):
# 读取Excel文件
xls = pd.ExcelFile(os.path.join(root, file))
#检查文件是否有第二个标签页,我的文件表08在第二个标签页,按实际修改
if len(xls.sheet_names) > 1:
#读取第二个标签页(索引为1),并指定使用第三行作为列名
df = pd.read_excel(xls, sheet_name=1, header=2)
#将数据添加到all_data中
all_data.append(df)
#使用pd.concat合并所有的数据
all_data = pd.concat(all_data, ignore_index=True)
#按照项目名称和项目特征描述分组,然后对工程量进行求和
all_data['工程量'] = all_data.groupby(['项目名称', '项目特征描述'])['工程量'].transform('sum')
#删除重复的行
all_data = all_data.drop_duplicates(['项目名称', '项目特征描述'])
#将结果保存到D:\fsx\python\data\xt\合并.xlsx文件中
all_data.to_excel('D:\\fsx\\python\\data\\xt\\合并.xlsx', index=False)
完美,本来一天的工作,剩下7.5小时可以摸鱼了!