Python技术练习------自动化处理费用表
一、前言
我们通常在处理表格中数据的时候,主要还是使用VBA代码来对数据进行加工处理。之前也通过VBA代码对表格数据进行了处理,链接:https://blog.csdn.net/YANG_1605/article/details/111998521。最近在学习python编程处理Excel,使用到openpyxl模块的知识。就试着使用python来实现费用表的汇总。
首先要导入openpyxl包,下载链接:https://pypi.org/project/openpyxl/#files
安装方法:
输入cmd命令,进入到控制台界面:
然后进入到openpyxl包所在的路径(其实进不进路径无所谓,安装时命令会自动在电脑上寻找,作者习惯进入当前路径),执行pip install openpyxl命令:
安装完成后,打开Pycharm编辑器
import openpyxl
二、项目简介
本次实例中总共包含6个工作表,通过对6张表中的数据进行提取,再进行运算,将其汇总成一张新的表格。这就是本次实例所要实现的功能。
六张表分别是:财务费用汇总(入账+未入账)、数据源(入账)、数据源(未入账)、试算表-是、试算表-非和试算表-上月累计额。其中财务费用汇总(入账+未入账)为最终要汇总形成的表。
逻辑思路:
1.数据源(未入账)处理:通过试算表-非的每一行D列与F列数据相减得到的差,对应填到数据源(未入账)表的金额列中,再通过每一行的金额与费用总和进行相除,得到对应的结构比率
2.数据源(入账)处理:通过试算表-是的每一行D列与F列数据相减得到的差,对应填到数据源(入账)表的金额列中,再通过每一行的金额与费用总和进行相除,得到对应的结构比率
3.财务费用汇总(入账+未入账):
3.1 处理本月发生额:将数据源(入账)和数据源(未入账)中金额进行相加,得到的和放到汇总表的本月发生额的金额中,再通过每一行的金额与费用总和进行相除,得到对应的结构比率
3.2 上月累计额:从试算表-上月累计额中复制得到,放到汇总表的E列和F列中
3.3 计算本年累计额:本月发生额的金额与上月累计额的金额相加,得到本年累计额的金额,再通过每一行的金额与费用总和进行相除,得到对应的结构比率
三、代码实现
import openpyxl
wb = openpyxl.load_workbook(r'F:\python表格\费用处理.xlsx')
print(wb.sheetnames)
#定义要处理的表格
ws = wb['试算表-是']
ws1 = wb['数据源(入账)']
ws2 = wb['试算表-非']
ws3 = wb['数据源(未入账)']
ws4 = wb['试算表-上月累计额']
ws5 = wb['财务费用汇总(入账+未入账)']#数据源(入账)表格处理
sum = 0
for i in range(1,34):#tmp = (ws1["D"+str(i+3)].value - ws1["E"+str(i+3)].value)tmp = ws.cell(row = i + 3,column = 4).value - ws.cell(row = i + 3,column = 5).value #计算差值,用临时变量tmp进行保存sum = sum + tmp #计算差值的和ws1["C"+str(i+3)].value = tmp #将tmp保存的值传入到数据源(入账)中
ws1["C37"].value = sum #将计算的和放到C列的最后面
for i in range(1,35):ws1.cell(row = i + 3,column = 4).value = ws1.cell(row = i + 3,column = 3).value/sum #计算结构比率,并写入到相应位置#数据源(非入账)处理
sum1 = 0
for i in range(1,34):tmp = ws2.cell(row = i + 3,column = 4).value - ws2.cell(row = i + 3,column = 5).valuesum1 = sum1 + tmpws3.cell(row = i + 3,column = 3,value = tmp)
ws3['C37'].value = sum1
for i in range(1,35):ws3.cell(row = i + 3,column = 4).value = ws3.cell(row = i + 3,column = 3).value/sum1#试算表-上月累计额处理
for i in range(1,35):ws5.cell(row = i + 3,column = 5).value = ws4.cell(row = i + 3,column = 7).valuews5.cell(row = i + 3,column = 6).value = ws4.cell(row = i + 3,column = 8).value#财务费用汇总(入账 + 未入账)
#处理本月发生额for i in range(1,35):tmp = ws1.cell(row = i + 3,column = 3).value + ws3.cell(row = i + 3,column = 3).valuews5.cell(row = i + 3,column = 3,value = tmp)
for i in range(1,35): # 计算结构比率ws5.cell(row = i + 3,column = 4).value = ws5.cell(row = i + 3,column = 3).value/ws5.cell(row = 37,column = 3).value#本年累计额处理计算
for i in range(1,35):ws5.cell(row = i + 3,column = 7).value = ws5.cell(row = i + 3,column = 3).value + ws5.cell(row = i + 3,column = 5).value
for i in range(1,35): # 计算结构比率ws5.cell(row = i + 3,column = 8).value = ws5.cell(row = i + 3,column = 7).value/ws5.cell(row = 37,column = 7).valuewb.save('F:\python表格\费用处理.xlsx')
四、运行效果展示
Python技术练习------自动化处理费用表相关推荐
- 基于python技术的自动化运维是干嘛的_如何理解Python与自动化运维的关系。?
一个是目的,一个是工具的关系 为了达到某个目的(比如这里的运维自动化),我们可以用不同的手段或者工具(比如这里的python) 如果你特别擅长Java.PHP,也可以用Java\PHP来开发相关运维自 ...
- 基于python技术的自动化运维是干嘛的_《Python自动化运维 技术与最佳实践》.pdf...
[实例简介]Python自动化运维 技术与最佳实践 [刘天斯著][机械工业出版社][2014.12][291页].pdf [实例截图] [核心代码] 目 录 本书赞誉 前 言 第一部分 基础篇 第1章 ...
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...
原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...
原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...
- python表单切换_python3 selenium自动化 frame表单嵌套的切换方法
在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...
- 14 张Python数据科学速查表
大家好,我是俊红. 今天给大家隆重推荐一个Python数据分析领域的大佬:小一,他也是公众号[小一的学习笔记]的号主! 小一是我的好友,从事数据分析行业近5年,擅长使用Python进行爬虫.数据处理和 ...
- Python开发资源速查表
Python开发资源速查表 Python实现算法和设计模式 algorithms - Python的一个算法模块. PyPattyrn - 一个用于实现常见设计模式的简单而有效的库. python-p ...
- Python刷投票自动化【刷微信投票】脚本开发,源代码分析
Python刷投票自动化[刷微信投票]脚本开发,源代码分析 前言 现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩.因此,刷票也就应运而生了.此次我们团队 ...
- Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)
前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...
- python自动测试s_用 Python 开启测试自动化的未来
使用 Python 脚本迈进先进的测试自动化技术 传统上,测试自动化工程师都是使用 shell 脚本和自主开发的工具进行自动测试.现在,测试团队可以使用 Python 软件更轻松.更稳健地完成他们的测 ...
最新文章
- 用PS制作APP的界面图片
- 人人都应该掌握的9种数据分析思维
- python画图三维-Python三维绘图之Matplotlib库的使用方法
- 常考数据结构与算法:每k个节点反转链表
- python文本解析_Python之文本文件解析
- sql获取日期相差天数oracle,找到oracle sql中两个日期之间的经过时间
- js 函数实参列表arguments和形参的那点事儿
- JDBC学习笔记(1)
- python文件处理——文件读写
- css城市列表,js 获取全国城市列表方法
- android 设置屏幕亮度,android 怎样设置屏幕亮度
- 以太网与工业以太网的区别
- 12306 并不是我们想的那样
- 人脸识别闸机系统解决方案
- 全面解读Marshmallow
- python输出26个大小写字母_python实现生成字符串大小写字母和数字的各种组合
- c# 讯飞语音 sdk
- 数学不好能学计算机编程吗,数学很差能学计算机吗 有哪些窍门
- Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
- cocos2d - 粒子系统工具(Particle Designer)