用openpyxl实现excel的统计汇总 |
您所在的位置:网站首页 › python分类汇总计数 › 用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,这个列表表由 二个元组组成,第一个元组是原始数据的行号,第二个元组是用于计算其间值的参数。 有了这些内容,应该就可以解决问题。一些注意事项是。 计算后的结果仅需要保留两位小数点。用str的format方法。如下所示。wt2.cell(rowIndexs[1], colIndex).value = "{0:.2f}".format(111.0213333) 读取值是,可能是字符串,数值格式,先用excel格式化一下再载入。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |