用openpyxl实现excel的统计汇总

某日,收到客户的一个小需求,要计算一张excel表,如下所示:

 

要求,计算各项目的平均值,平均值乘以一个区间,用”-”分格,并总汇总其间值,结果如下所示:

 

我们用openpyxl 计算实现。先简要介绍一下这个库。Openpyxl是一个基于python实现操作excel的库,下面给一个简要示例,更多的API百度一下吧。

from openpyxl import load_workbook
#打开excel
bk2 = load_workbook("02.xlsx")
#获取工作簿
wt2 = bk2.get_sheet_by_name("Sheet1")
#写入值
wt2.cell(1,1).value = "abc"
#获取值
print(wt2.cell(1,2).value)
#另存为
bk2.save("01.xlsx")

这些代码说明几个问题。一是我们可以遍历表格,cell(row, col),row是行,col是列,wt2.cell(1,1)获取行1,列A的单元格;二是可以载入和另存为,基于这个,我们先做一个模板,计算结果后,把值填入模板,再另存为需要的结果。这样的好处不仅不会修改到原始数据,而且格式也符合要求。

先定义一个参数,用字典结构。如下所示。

parmas = {"01": [(5, 6),  (15, 20)],
          "02": [(8, 11), (16, 24)],
          "03": [(13, 15), (1.4, 2.4)],
          "04": [(17, 18), (1, 1.4)],
          "05": [(20, 20), (1, 1.4)],
          "06": [(22, 22), (0.7, 1)]}

解释一下?Python中,字典的键和值用冒号(:)分隔开,是基于于散列实现的(谁关心呢?),示例中值是一个列表list,这个列表表由 二个元组组成,第一个元组是原始数据的行号,第二个元组是用于计算其间值的参数。

有了这些内容,应该就可以解决问题。一些注意事项是。

  1. 计算后的结果仅需要保留两位小数点。用str的format方法。如下所示。

wt2.cell(rowIndexs[1], colIndex).value = "{0:.2f}".format(111.0213333)

  1. 读取值是,可能是字符串,数值格式,先用excel格式化一下再载入。

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值