目录

  • 作者的话
  • 代码示例

作者的话

基本思路:用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. 20172307 结对编程项目-四则运算 第二周 阶段总结
  2. mysql主从复制 drbd_MySql主从复制简单案例实现
  3. arXiv 2019 《DCA: Diversified Co-Attention towards Informative Live Video Commenting》论文笔记
  4. 在IDEA中设置Java的堆大小
  5. FD.io VPP:CentOS7下构建自己的VPP RPM包
  6. 实时--1.1 日志数据分析
  7. node-sass安装报错node-sass@4.12.0 postinstall: `node scripts/build.js`
  8. java poi导出excel模板_Java poi实现导出excel,添加数据有效性,生成模板
  9. 用java编写录音机类_java实现录音机
  10. 【毕业设计】物联网智能温控风扇设计与实现 - stm32 单片机 嵌入式
  11. 恒生电子软件测试面试
  12. Matlab实现图像识别(六)
  13. Apache详解(五)WEB相关工具
  14. 【跨端应用】—— uniapp黑马商城App学习笔记(二)
  15. 什么蓝牙耳机好?测评达人精选五款性价比高蓝牙耳机推荐
  16. CRM系统中的线索、客户、联系人、商机
  17. 【ArcGIS Pro二次开发】(17):打开GDB、SHP、CAD等各种数据
  18. 程序员,如何从平庸走向理想?
  19. vue 项目级别工程搭建-vuex的status,vue选中数据(七)
  20. delphi源码 中间件 框架【网盘映射】

热门文章

  1. eclipse如何设置成保护眼的背景色
  2. 写一个简单的运用键盘监听创建的Java文件
  3. 手机txt拆分器_TXT文本分割器
  4. hivesql的几种优化的方法
  5. MySQL数据库安装教程
  6. jsp连接MYSQL数据库教程(文字+图)
  7. 苹果Mac网络视频下载工具推荐:Downie 4
  8. 图文混盘之---仿微博表情键盘Objective-C版
  9. FastStone Capture滚动截屏丢失行解决办法
  10. vue-项目完成的项目报告