python调用xlwings实现excel在原文件上的内容修改和饼图绘制

一、原文件

原文件

二、python程序

import xlwings as xw
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.family']='SimHei'

app=xw.App(visible=True,add_book=False)
workbook=app.books.open('data.xlsx')
sheet=workbook.sheets['Sheet1']

# 将李四缺失的数学成绩改成82并保存到原文件
sheet.range('D3').value=82

# 计算总成绩
for i in range(2,5):
    sheet.range(i,6).formula=f'=SUM(C{i}:E{i})'

# 计算平均成绩
for j in range(3,6):
    sheet.range(5,j).formula=f'=AVERAGE('+chr(64+j)+'2'+':'+chr(64+j)+'4'+')'
    # 保留3位小数
    sheet.range(5,j).number_format='0.000'

# 根据总成绩进行排名
for i in range(2,5):
    sheet.range(i,7).formula=f'=RANK.AVG(F{i},F2:F4)'

# 绘制饼图
cmap=plt.colormaps['tab20c']
outer_colors=cmap(np.arange(3)*4)
inner_colors=cmap([0,1,2,4,5,6,8,9,10])
fig,ax=plt.subplots()
ax.pie(np.array(sheet.range('C2:E4').value).sum(axis=1),autopct=lambda x:'{:.0f}'.format(x*np.array(sheet.range('C2:E4').value).sum()/100),
       radius=1,labels=sheet.range('B2:B4').value,pctdistance=0.7,colors=outer_colors,wedgeprops=dict(width=0.3,edgecolor='w'),textprops={'fontsize':10,'color':'k'})
ax.pie(np.array(sheet.range('C2:E4').value).flatten(),autopct=lambda x:'{:.0f}'.format(x*np.array(sheet.range('C2:E4').value).sum()/100),
       radius=0.7,labels=sheet.range('C1:E1').value*3,pctdistance=0.8,colors=inner_colors,wedgeprops=dict(width=0.3,edgecolor='w'),textprops={'fontsize':8,'color':'k'})
ax.set(aspect='equal')
sheet.pictures.add(fig,name='成绩',update=True,left=sheet.range('I1').left,top=sheet.range('I1').top)

print(sheet.range('A1').expand().value)
workbook.save('data.xlsx')
workbook.close()
app.quit()

三、效果展示

效果展示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值