python保留格式汇总各部门excel内容的实现思路

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python保留格式汇总各部门excel内容的实现思路使⽤pthon汇总各部门的excel内容,主要思路:
1.使⽤pandas读⼊汇总表(b3df)和其中⼀个部门的表格内容(dedf)
2.填充pandas空值,使'项⽬名称','主管部门'列没有空值
3.使⽤xlwings打开汇总表(b3ws)和部门表(dews)
4.⽤b3df、dedf对⽐两个表中项⽬的⾏数是否⼀样,不⼀样则在汇总表(b3ws)插⼊⾏,使汇总表和部门表格(dews)⼀致
5.复制部门表格(dews)内容到汇总表(b3ws)
6.保存退出
汇总表格如下:
汇总A、B、C、D部门后的表格如下:
具体代码如下:
import pandas as pd
import xlwings as xw
def insertRow(zgfj,deFile,b3df,b3ws):
'''
'''
print('正在汇总:' + zgfj)
dedf = pd.read_excel(deFile,header=3)
dedf[['项⽬名称','主管部门']] = dedf[['项⽬名称','主管部门']].fillna(axis=0,method='ffill')
dewb = app.books.open(deFile)
dews = dewb.sheets[0]
#对⽐两个表的不同
df1 = pd.pivot_table(dedf[dedf['主管部门']==zgfj],values='责任单位',index='项⽬名称',aggfunc=[len])
df2 = pd.pivot_table(b3df[b3df['主管部门']==zgfj],values='责任单位',index='项⽬名称',aggfunc=[len])
df12 = df1 - df2
if df12.shape[0]:
diff = df12[df12[('len','责任单位')] != 0]
#两个表不同则修改excel表,使相同项⽬的⾏数相同
#if diff.shape[0]:
for xmmc in list(diff.index):
for r in range(1,ed_range.shape[0]+1):
if b3ws.range(r,2).value == xmmc:
if diff.loc[xmmc][0] > 0:
print(str(r+1) + ':' + str(int(r+diff.loc[xmmc][0])))
b3ws.api.rows(str(r+1) + ':' + str(int(r+diff.loc[xmmc][0]))).insert #插⼊部门多出的⾏
break
else:
b3ws.api.rows(str(r+1) + ':' + str(int(r-diff.loc[xmmc][0]))).delete #删除多余的⾏
break
#复制部门内容到汇总表
for xmmc in list(df2.index):
for r in range(1,ed_range.shape[0]+1):
if b3ws.range(r,2).value == xmmc:
#项⽬名称在部门excel表的⾏号
rfj = dedf[dedf['项⽬名称'] == xmmc].index[0] + 5
#需要插⼊的⾏数
rows = df1.loc[xmmc][0]
#复制部门excel表格项⽬名称所在⾏到汇总表
dews.api.rows(str(rfj) + ':' + str(rfj+rows-1)).Copy(b3ws.api.rows(str(r) + ':' + str(r+rows-1)))
break #因为项⽬名称唯⼀,复制后可跳出进⾏下⼀项⽬
if __name__ == '__main__':
#汇总表格⽂件
b3File = '汇总⽂件.xls'
#各部门表格⽂件所在位置
fjFile = {'B部门':'B部门.xls',\
'A部门':'A部门.xls',\
'C部门':'C部门.xls',\
'D部门':'D部门.xls'}
app = xw.App(visible=False,add_book=False)
app.display_alerts = False
app.screen_updating = False
b3wb = app.books.open(b3File)
b3ws = b3wb.sheets[0]
b3df = pd.read_excel(b3File,header=3)
for zgfj,file in fjFile.items():
b3df[['项⽬名称','主管部门']] = b3df[['项⽬名称','主管部门']].fillna(axis=0,method='ffill') #填充合并单元格内容
#print(b3df.shape[0])
insertRow(zgfj,file,b3df,b3ws)
b3wb.save('汇总后⽂件.xls')
app.quit()
app.kill()
总结
到此这篇关于python保留格式汇总各部门excel内容的实现思路的⽂章就介绍到这了,更多相关python保留格式excel内容内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

相关文档
最新文档