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

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,b3ws.used_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,b3ws.used_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文本格式转为数字的代码演示: 首先,我们需要安装`openpyxl`库,可以使用以下命令进行安装: ``` pip install openpyxl ``` 接下来,我们来看一个示例代码,假设我们有一个Excel文件,里面有一个名为Sheet1的工作表,其中A列到C列均为文本格式,我们需要将A列到C列的数据转为数字格式并保存: ```python import openpyxl # 打开Excel文件 workbook = openpyxl.load_workbook('example.xlsx') # 获取Sheet1工作表 sheet = workbook['Sheet1'] # 遍历A列到C列 for col in ['A', 'B', 'C']: # 遍历每个单元格 for cell in sheet[col]: # 如果单元格的值是数字字符串,则转为数字格式 if isinstance(cell.value, str) and cell.value.isdigit(): cell.value = int(cell.value) # 保存Excel文件 workbook.save('example.xlsx') ``` 在上面的代码中,我们使用`openpyxl`库打开了一个名为`example.xlsx`的Excel文件,并获取了其中的Sheet1工作表。然后,我们遍历了A列到C列的每个单元格,如果单元格的值是数字字符串,则将其转为数字格式。最后,我们保存了Excel文件。 代码中的`isinstance(cell.value, str)`判断单元格的值是否为字符串类型,`cell.value.isdigit()`判断字符串是否为数字字符串,如果是,则使用`int()`函数将其转为数字类型。 注意,如果单元格的值本身就是数字类型,我们不需要进行转换,因为数字类型已经是数字格式了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值