Loading... 职场中,不管是运维还是开发还是项目经理或者财务,都可能存在茫茫多的excel去做一些统计处理。恐怖的是,可能统计方式随着需求变化也会经常修改修正。作为职员,接到统计需求可能很模糊,一周、当周,反正通常没有具体时间节点,或者因其他原因。随之变化会导致不断修改我们的统计方式。另外我自己的记性并不是很好,面对简单的统计还能记得住,当面对复杂点的统计,可能到下次就忘记之前怎么统计的了。在多方面的原因下,迫使我有动力去开发了一款尽可能的适应不同数据表格、不同统计需求的Python小程序。 ## 小程序介绍 ### 代码逻辑 ![excel_logic](https://storage.bbcking5.com/%E6%96%87%E7%AB%A0%E5%86%85%E9%83%A8%E5%9B%BE/Excel%E7%BB%9F%E8%AE%A1/excel_logic.png-wuxingyuwordpresspic) 整套逻辑可以循环运行,意味着可以创建多份规则配置表的Sheet,来批量统计!相当省事!这是我的[代码链接](https://github.com/wuxingyu090/excel_statistics "**代码链接**")。 ### 目录介绍 * src : 源代码目录 * data_interaction : OS、GUI等逻辑代码目录 * excel_process : 处理Excel相关逻辑代码目录 * match_process : 对应统计规则配置表逻辑代码目录 * input : 统计规则配置表存放位置 * output : 统计后输出表存放位置 ### 使用说明 #### 1、环境准备 * 提前安装Git工具,最新版即可 * 提前安装Python环境,最好是V3.10以上版本 #### 2、下载小程序 ```bash git clone https://github.com/wuxingyu090/excel_statistics.git # 也可直接访问网站下载V1.0.1 Releas压缩包 cd excel_statistics/ # 进入小程序目录下 pip install -r requirements.txt # 安装依赖包 ``` #### 3、准备需要统计的Excel数据表格 * 将数据文件放置excel_statistics目录下 #### 4、规则配置 在input目录下的config-keycount.xlsx 即为规则配置表。其中每个Sheet(除说明Sheet),都是单独一套规则配置策略。Sheet名称可自定义,但需要与main.py 文件中rule_table_list列表数据同时修改成自定义名称,才能执行程序。(因为考虑到可能有存在未配置完成的规则配置策略无需运行的情况)后续这个可能会做成Gui进行选择。如下配置样例: | count_name | table | sheet | l1_field | l1_match | l2_field | l2_match | l3_field | l3_match | l4_field | l4_match | l5_field | l5_match | | ---------- | ------------------------ | ---------- | ------------ | ---------- | -------- | -------- | -------------- | ----------------------- | -------------- | ------------------------------------------------------------ | -------- | -------- | | TEST1故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | 2021-04-26 | | | | | | | | | | TEST2故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | 2021-04-26 | 故障级别 | Z2 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | 半双工模式 | | | | ASO3故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | %H,22-08 | 故障级别 | =,Z2 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | ['ecs-yaochi.EcsGrandcanalDashboard服务提供异常','实例切换'] | | | | ADB4故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | %H,22-08 | 故障级别 | =,Z1 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | Cgroup挂载检查 | | | * Count_name列:统计名称可自定义,相同规则配置sheet中,每个Count_name名称不可相同。 * Table列:填入放置excel_statistics目录下数据表格,如有多份数据表格,则填写对应不同的表名。可从多份数据表中进行统计。 * sheet列:填入对应表格中需要统计数据的Sheet名称 * l?_field:第几层级的字段名,填入需要统计数据的Sheet中的字段 * l?_match:第几层级的匹配,填入匹配规则。列表和字符串默认使用模糊匹配,带有`'>,','<,','<>,','=,','%D,','%H,','%MI,'`此类前缀表达式会进入对应规则匹配。 * 如上`l?_field 和 l?_match` 样例规则配置表格中只到了l10 。(我感觉应该够了,不够可往后顺延) ```python # main.py 文件 def run(show): rule_table_list = ['count_rule', 'count_rule1', 'count_rule2'] #上面右侧列表中count_runle* 替换成对应规则配置表中自定义sheet名称 config_keycount = 'config-keycount' for rule_table in rule_table_list: chart_product(config_keycount, rule_table) if show: show_chart(rule_table) else: pass ``` #### 5、运行程序 ```bash python main.py --help # 查看帮助文档 Usage: main.py [OPTIONS] Options: --show BOOLEAN show 参数,默认False,不直接输出图表 --help Show this message and exit. python main.py # 统计数据以及图表输出至输出表 python main.py --show True # 统计数据以及图表输出至输出表,同时直接界面展示图表 ``` #### 6、查看统计结果 <p align = "center"> <img src="https://storage.bbcking5.com/%E6%96%87%E7%AB%A0%E5%86%85%E9%83%A8%E5%9B%BE/Excel%E7%BB%9F%E8%AE%A1/excel1.jpg-wuxingyuwordpresspic" width="300" /> <img src="https://storage.bbcking5.com/%E6%96%87%E7%AB%A0%E5%86%85%E9%83%A8%E5%9B%BE/Excel%E7%BB%9F%E8%AE%A1/excel2.jpg-wuxingyuwordpresspic" width="300" /> </p> ## 后续实现 当前V1版本Excel统计小程序还有很多不足,比如没有Gui,配置不是很方便,自定义匹配规则还比较少,还待后续逐步叠加更新。但因个人时间并不多。锦上添花的新功能可能跟新会比较缓慢!不过如果有使用上的Bug,还请提交Issue,小编博主会在一周内答复!同时也希望有人帮忙一起迭代新的统计规则功能! Last modification:June 4, 2024 © Allow specification reprint Like 2 如果觉得我的文章对你有用,请随意赞赏