目录

  • 作者的话
  • 代码示例

作者的话

基本思路:用name代表科目名称,后面贴一个数字代表不同年份,因为需要截取的数据不同,后缀的年份长度有变化,众多变量的批量定义是非常有必要的。计算这一步可以预先设定excel有公式的单元格,所以python只需要复制该模板并且提取填入有关科目即可。exec()语句不同于宏定义,在自定义函数内使用会报错,所以这里只用了一个循环语句。
反思:这里提交的代码是半成品,没有准确和完整实现要求,但是基本方法成型;我觉得需要人工浏览并且修改和统一每一张报表的格式便于代码操作,这是不可省略的努力,否则代码的错误只会使人更加心疲。
更新:可以做一个excel公式模板Sheet页复制到每一家公司报表旁边
然后在按键精灵脚本辅助下手工复制数据自动生成一条属于该公司的“记录”,最后再用按键精灵或uibot自动读取并整合每份Excel中的该项记录。

代码示例

import os
import openpyxl
import  re
input= r'C:\Users\huang\Desktop\手工整理表单 - 副本'
output_path = r'C:\Users\huang\Desktop\表单萃取'
tle = ['资产负债表', '利润表', '现金流量表']
great_model=output_path+'\\'+'科创板公司上市前财务数据.xlsx'
os.chdir(input)
order=0
for file in os.listdir():if os.path.splitext(file)[1] == '.xlsx'and file[6]=="_":print(file+" is processing")order=order+1wb = openpyxl.load_workbook(great_model)wb1 = openpyxl.load_workbook(file)model = wb["Sheet"]target = wb1["Sheet"]for i, row in enumerate(model.iter_rows()):for j, cell in enumerate(row):target.cell(row=i + 1, column=j + 1, value=cell.value)sheet1 = wb1[tle[0]]namelist1 = ['asset', "ppe", "rec", "storage", "equity"]numlist1 = [2, 1, 2, 2, 2]for i in range(0, 5, 1):for k in range(1, 1 + numlist1[i], 1):exec("global " + namelist1[i] + str(k))exec(namelist1[i] + str(k) + '=' + "None")condition1 = ['资产总', '权益总', '固定资产', '存货']task1 = ["asset", "equity", "ppe", "storage"]j = 0for col in sheet1['A']:j = j + 1if col.value==None:continuefor cdt in condition1:if col.value.find(cdt) != -1:tmp = sheet1[j ]name1 = task1[condition1.index(cdt)]i = numlist1[namelist1.index(name1)]for k in range(1, 1 + i, 1):exec(name1 + str(k) + '=tmp[' + str(k) + '].value')if col.value.find('应收账款') != -1 or col.value.find('应收票据') != -1:tmp = sheet1[j ]if rec1 == None :if type(tmp[1].value)==float:rec1 = tmp[1].valueelse:if type(tmp[1].value) == float:rec1 = rec1 + tmp[1].valueif rec2 == None :if type(tmp[2].value)==float:rec2 = tmp[2].valueelse:if type(tmp[2].value)==type(1.11):rec2 = rec2 + tmp[2].valuesheet2 = wb1[tle[1]]namelist2 = ['rev', "cost", "tax", "sfee", "gfee", "ffee", "ree", "profit"]numlist2 = [3, 2, 2, 2, 2, 2, 2, 2]for i in range(0, 8, 1):for k in range(1, 1 + numlist2[i], 1):exec("global " + namelist2[i] + str(k))exec(namelist2[i] + str(k) + '=' + "None")condition2 = ["营业收入", "营业成本", '税金', '销售费用', '管理费用', '财务费用', '研发费用', '净利润']task2 = ["rev", "cost", "tax", "sfee", "gfee", "ffee", "ree", "profit"]j = 0for col in sheet2['A']:j = j + 1if col.value==None:continuefor cdt in condition2:if col.value.find(cdt) != -1:tmp = sheet2[j ]name2 = task2[condition2.index(cdt)]i = numlist2[namelist2.index(name2)]for k in range(1, 1 + i, 1):exec(name2 + str(k) + '=tmp[' + str(k) + '].value')sheet3 = wb1[tle[2]]namelist3 = ['cfo']numlist3 = [2]for i in range(0, 1, 1):for k in range(1, 1 + numlist3[i], 1):exec("global " + namelist3[i] + str(k))exec(namelist3[i] + str(k) + '=' + "None")j = 0flag = 0for col in sheet3['A']:j = j + 1if flag == 1:breakif col.value==None:continueif col.value.find("经营") != -1 and col.value.find("净") != -1:tmp = sheet3[j]flag = 1for k in range(1, 1 + 2, 1):exec('cfo' + str(k) + '=tmp[' + str(k) + '].value')namelist = namelist1 + namelist2 + namelist3numlist = numlist1 + numlist2 + numlist3label = ["总资产", "固定资产", "应收账款", "存货", "净资产", "收入", "成本", "税金", "销售", "管理", "财务", "研发", "利润", "现金"]j = 0for col in target['A']:j = j + 1if col.value == None:continuefor cdt in label:if col.value.find(cdt) != -1:name = namelist[label.index(cdt)]i = numlist[namelist.index(name)]for k in range(1, 1 + i, 1):exec("target.cell(row=" + str(j) + ", column=" + str(k) + "+2, value=" + name + str(k) + ')')wb1.save(output_path + '\\' + file)  # 保存数据wb1.close()  # 关闭excelwb.close()print(file + " is done")os.remove(file)

(连载)用python在excel中对财务报表项目进行提取和计算相关推荐

  1. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  2. python excel增加一列_(用Python修改excel中一列数据)python新增一列

    python怎么从excel中读取数据? ⒈ #import παέτο import xlrd #Ρύθμι διαδρής path='C:\\Users\\jyjh\\Desktop\\data ...

  3. python在excel中的应用-python怎样在excel中应用?

    python在excel中应用的方法:首先[return sorted(s)]在本地建立一个目录,并保存这个代码并命名为[Methods.py]:然后打开Excel,填写一些数据以便提供python脚 ...

  4. python获取excel某一列-Python从Excel中读取日期一列的方法

    如下所示: import xlrd import datetime file=u"伏特加.xls"#注意读中文文件名稍微处理一下 data=xlrd.open_workbook(f ...

  5. python如何将生成的随机数存入文件中_用python在excel中读取与生成随机数写入excel中...

    今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧. 具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再 ...

  6. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  7. vb.net读取excel并写入dgv_如何用Python读取Excel中的图片?然后写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  8. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  9. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  10. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

最新文章

  1. 齐鲁工业大学计算机读研,齐鲁工业大学考研难吗
  2. [转载]李开复先生给中国学生的第四封信:大学四年应是这样度过
  3. 实战篇:一个核心系统 3 万多行代码的重构之旅
  4. hadoop分布式集群搭建
  5. 转:VirtualBox虚拟机网络连接设置的四种方式
  6. RabbitMQ之TTL(Time-To-Live 过期时间)
  7. 编译原理—语义分析(Java)
  8. [Web开发] IE8 网页开发参考文档
  9. 二叉搜索树(搜索二叉树)转换成一个双向链表
  10. 这才是真相,“轻点,疼”被禁却另有玄机
  11. macbook更新系统服务器,苹果电脑如何升级系统_苹果电脑怎么更新版本-win7之家...
  12. 记账本记录日常收支,使用图表查看项目
  13. 比较结构的关联词(二)
  14. 奉子成婚,永远不可能成为潮流
  15. 利用matlab求系统的单位阶跃响应,基于Matlab6_5的归一化二阶系统单位阶跃响应的模拟演示...
  16. 按键精灵自动登录网站范例源码
  17. Delphi FireDAC 出现[FireDAC][DatS]-32. Variable length column [*] overflow. Value length - [*]
  18. linux系统中怎样抓logo,linux启动成功修改logo
  19. 2022年科协第二次硬件培训总结
  20. 业务分析(CBAP)第01讲:核心概念模型

热门文章

  1. 杰里之混响音效调试【篇】
  2. iOS APP 如何做才安全
  3. matlab钢琴音教程,弹琴吧 - 今天聊一聊钢琴扒带及MIDI制作,使用音
  4. WebX RPC说明
  5. 2022官网下载jdk8教程
  6. 利用WPS功能破解及本地恢复密码
  7. eclipse编android计算机,在eclipse中制作的android 计算器程序
  8. SQL删除重复数据并只保留一条
  9. 大数据学习菜鸟的Hadoop快速入门基础教程汇总详细解答
  10. 深入浅出Dubbo剖析出视频教程了!!!