一、前言

我们通常在处理表格中数据的时候,主要还是使用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技术练习------自动化处理费用表相关推荐

  1. 基于python技术的自动化运维是干嘛的_如何理解Python与自动化运维的关系。?

    一个是目的,一个是工具的关系 为了达到某个目的(比如这里的运维自动化),我们可以用不同的手段或者工具(比如这里的python) 如果你特别擅长Java.PHP,也可以用Java\PHP来开发相关运维自 ...

  2. 基于python技术的自动化运维是干嘛的_《Python自动化运维 技术与最佳实践》.pdf...

    [实例简介]Python自动化运维 技术与最佳实践 [刘天斯著][机械工业出版社][2014.12][291页].pdf [实例截图] [核心代码] 目 录 本书赞誉 前 言 第一部分 基础篇 第1章 ...

  3. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...

  4. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  5. python表单切换_python3 selenium自动化 frame表单嵌套的切换方法

    在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...

  6. 14 张Python数据科学速查表

    大家好,我是俊红. 今天给大家隆重推荐一个Python数据分析领域的大佬:小一,他也是公众号[小一的学习笔记]的号主! 小一是我的好友,从事数据分析行业近5年,擅长使用Python进行爬虫.数据处理和 ...

  7. Python开发资源速查表

    Python开发资源速查表 Python实现算法和设计模式 algorithms - Python的一个算法模块. PyPattyrn - 一个用于实现常见设计模式的简单而有效的库. python-p ...

  8. Python刷投票自动化【刷微信投票】脚本开发,源代码分析

    Python刷投票自动化[刷微信投票]脚本开发,源代码分析 前言 现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩.因此,刷票也就应运而生了.此次我们团队 ...

  9. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)

    前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...

  10. python自动测试s_用 Python 开启测试自动化的未来

    使用 Python 脚本迈进先进的测试自动化技术 传统上,测试自动化工程师都是使用 shell 脚本和自主开发的工具进行自动测试.现在,测试团队可以使用 Python 软件更轻松.更稳健地完成他们的测 ...

最新文章

  1. 用PS制作APP的界面图片
  2. 人人都应该掌握的9种数据分析思维
  3. python画图三维-Python三维绘图之Matplotlib库的使用方法
  4. 常考数据结构与算法:每k个节点反转链表
  5. python文本解析_Python之文本文件解析
  6. sql获取日期相差天数oracle,找到oracle sql中两个日期之间的经过时间
  7. js 函数实参列表arguments和形参的那点事儿
  8. JDBC学习笔记(1)
  9. python文件处理——文件读写
  10. css城市列表,js 获取全国城市列表方法
  11. android 设置屏幕亮度,android 怎样设置屏幕亮度
  12. 以太网与工业以太网的区别
  13. 12306 并不是我们想的那样
  14. 人脸识别闸机系统解决方案
  15. 全面解读Marshmallow
  16. python输出26个大小写字母_python实现生成字符串大小写字母和数字的各种组合
  17. c# 讯飞语音 sdk
  18. 数学不好能学计算机编程吗,数学很差能学计算机吗 有哪些窍门
  19. Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
  20. cocos2d - 粒子系统工具(Particle Designer)

热门文章

  1. 深入理解Instrument
  2. Attention UNet
  3. 我是凡尘最美的莲花-记再读仓央嘉措
  4. SqlServer——正则表达式
  5. python爬视频网站数据_Python爬虫:B站排行榜视频播放量,视频评论量等数据采集...
  6. 怎么看待小公司的规章制度?
  7. 天才小毒妃 第945章 龙非夜心情很不好
  8. 学习笔记—bootstrap(2)
  9. Nginx配置反向代理_飘云羽逸_新浪博客
  10. 虚拟汽车加油问题 (贪心算法)