股东分析报表程序思路

股东分析报表程序思路

(PS. 因为数据是要保密的,所以就不截图全部了)
目录内容
在这里插入图片描述
这是统计的所有维度(禁止外传的水印原本文件中是没有的,也是我自己加的)

公司投资原本是用两份需要对比的股东数据excel通过一个软件生成一份股东分析报表,不过因为这个软件是付费的,公司不想花这钱,就让我写这个分析程序

两份需要对比的股东数据excel文件我看格式也应该是某个软件生成的,并不是投资部的人手动统计出来的,是两份带格式的.xls文件

生成软件长啥样没给我看,只给我看了生成后的文件样子,乍一看像是word文件,因为双击后是office打开的(一般人电脑不会显示文件后缀,所以当时我也以为是word文件了),里面居然还带统计图表图片,当时我就觉得这玩意儿写起来有点难度啊,后来拿到文件以后发现居然是个.xml文件

思路:

我试了一般xml文件并不能用office打开,因该是要符合office标准的,我没查到需要添加什么标签对内容才能符合office标准,所以我放弃了,但是xml文件给我提供了思路,我想到了一个简单的办法就是模版

第一步:将.xls文件转为.xlsx文件

因为使用openpyxl顺手,但是openpyxl不支持.xls所以第一步先转换

# 将xlx转为xlsx
def open_xls_as_xlsx(xls_path, xlsx_path):"""将 Excel中 xls 样式改为 xlsx:param xls_path:  xls文件路径:param xlsx_path: xlsx文件保存路径:return:"""# first open using xlrdbook = xlrd.open_workbook(xls_path)index = 0nrows, ncols = 0, 0sheet = book.sheet_by_index(0)while nrows * ncols == 0:sheet = book.sheet_by_index(index)nrows = sheet.nrowsncols = sheet.ncolsindex += 1# prepare a xlsx sheetbook_new = Workbook()sheet_new = book_new.create_sheet("sheet1", 0)for row in range(0, nrows):for col in range(0, ncols):sheet_new.cell(row=row+1, column=col+1).value = sheet.cell_value(row, col)book_new.save(xlsx_path)

(PS. 网上找的代码)

第二步:将符合office标准的.xml文件后缀改为.docx,然后将.docx转为.html

因为我发现用pydocx可以做到word和html互转,灵机一动想到了改后缀转为html文件,结果居然成了(可以节约很多写前端代码的时间,美滋滋)

from pydocx import PyDocX
html = PyDocX.to_html("ccc.docx")
f = open("test.html", 'w', encoding="utf-8")
f.write(html)
f.close()

第三步:设计数据结构修改模版

其实这里就是数据结构配合jinja模版,用来改jinja模版

from jinja2 import Templatedef main():http_template = open('test.html', encoding='utf8').read()template = Template(http_template)# 数据结构datas = {}ret = template.render(datas)open(f'BaiDu.html', 'w', encoding='utf8').write(ret)if __name__ == '__main__':main()

第四步:根据数据结构写统计逻辑

这就是写代码了,光python代码四天写了我两千五百多行,这里还有一个问题,就是内部股东,内部股东是一个名单,我的做法是写一个json文件里面放着内部股东名字,以后要增加减少直接改json文件就可以了,这里还有一个问题,就是打包前和打包后json文件路径问题

 # 打包后放exe目录下json_path = os.path.dirname(os.path.realpath(sys.executable))+os.sep + "neibugudong.json"# 没打抱前放在当前目录下json_path = os.getcwd()+os.sep+"neibugudong.json"

第五步:模板样式和echarts图表数据

pydocx转的html文件样式其实是有问题的,还有一部分样式是没有的,这些都需要自己手动修改,图表数据直接用echarts显示

第六步:打包exe

直接Pyinstaller打包,然后把模版文件和json文件放到exe同级目录下

在这里插入图片描述
将对比文件拖进去按回车,然后生成报表(四天时间写这么多分析没心思用Qt写GUI界面了,直接命令行用用吧)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/135311.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理应用(二):自然语言推断

自然语言推断 自然语言推断(Natural Language Inference)是指通过对自然语言文本进行逻辑推理和推断,判断两个句子之间的关系,通常包括三种关系:蕴含(entailment)、矛盾(contradict…

工商银行潍坊分行党建RPA机器人项目解析

01 案例背景:银行业掀起引入RPA加速实现数字化转型的浪潮 近年来,金融科技的蓬勃发展极大促进了银行的业务创新,新技术、新业态层出不穷。随着银行业务和科技的融合逐步落实,银行业务正朝着线上化、智能化转变。科技赋能的转型范…

如何在 Excel 中求平方根

需要在 Excel 中求一个数字的平方根吗?使用几个内置的 Excel 函数和公式可以轻松计算平方根。在本分步指南中,您将学习在 Excel 中计算平方根的 5 种不同方法,包括使用 SQRT 函数、POWER 函数、指数公式、VBA 代码和 Power Query。跟随教程&a…

华为云云耀云服务器L实例评测|基于L实例使用Docker部署MySQL服务并连接MySQL—phpMyAdmin管理工具

文章目录 一、云耀云服务器产品优势1、智能不卡顿2、价优随心用3、上手更简单4、管理更省心 二、远程连接云耀云服务器L实例三、安装Docker、docker-compse1、docker安装2、docker-compose安装 四、方法① 使用Docker安装部署MySQL服务五、方法② 使用docker-compse安装部署MyS…

Maven常见面试题总结

Maven简介 Maven 是一个项目管理和整合工具。Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期管理系统(Project Lifecycle Management System),一个依赖管理系统(Dependency Management System)&#x…

C语言天花板——指针(初阶)

🌠🌠🌠 大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇 一、什么是指针&…

WebGL 正确处理对象前后的关系——隐藏面消除(深度测试)/ 深度冲突

目录 前言 验证WebGL处理对象前后关系的规则——后绘制的图形覆盖先绘制的图形 隐藏面消除(深度测试) 开启隐藏面消除功能,需要遵循以下两步: 1.开启隐藏面消除功能。 gl.enable()函数规范 2.在绘制…

2023常用的原型设计软件推荐

美观易操作的产品原型可以帮助团队构建积极的用户体验,帮助团队理解产品交互逻辑。 因此,可互动、易修改的产品原型设计对产品的点击率和回访率具有重要意义。 选择专业的产品原型设计工具,可以为团队和企业带来高效的产品设计体验。本文选…

ddtrace 系列篇之 dd-trace-java 项目编译

dd-trace-java 是 Datadog 开源的 java APM 框架,本文主要讲解如何编译 dd-trace-java 项目。 环境准备 JDK 编译环境(三个都要:jdk8\jdk11\jdk17) Gradle 8 Maven 3.9 (需要 15G 以上的存储空间存放依赖) Git >2 (低于会出现一想不到的异常&#xf…

Linux JAVA环境的搭建tomcat的部署(含多实例)

tomcat tomcat是Apache软件基金会项目中的一个核心项目由 Apache、Sun 和其他一些公司及个人共同开发而成。tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器. tomcat的组成 tomcat用于支持Java Servlet和JSP。它是一个重要的We…

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单AdaptiveTextSelectionToolba样式UI效果

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单样式UI效果 在开发过程中,需要长按TextField输入框cut、copy设置为中文“复制、粘贴”,我首先查看了TextField中的源码,看到了ToolbarOptions、AdaptiveTextSelectionToo…

AI与医疗保健:革命性技术如何拯救生命

文章目录 引言AI的应用领域1. 影像识别2. 疾病诊断3. 药物研发4. 个性化治疗 AI技术1. 机器学习2. 深度学习3. 自然语言处理4. 基因组学 实际案例1. Google Health的深度学习模型2. IBM Watson for Oncology3. PathAI的病理学分析 道德和隐私考虑结论 🎉欢迎来到AIG…

实验4 交换机端口隔离(access模式)

交换机端口隔离(access模式) 实验目的实验拓扑实验步骤(1)在未划分vlan前,配置pc1、pc2的地址,如图所示(2)测试两台pc机的连通性(3)创建vlan,并验…

按键点亮led灯

原理图: K0这个按键按下时,开发板D1这个灯亮,松开,灯灭 代码如下: #include "stm32f4xx.h" void LED_Init(void) {//1.定义一个GPIO外设的结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//RCC_AHB1PeriphClockCmd(RCC_AHB1Pe…

Linux底层基础知识

一.汇编,C语言,C,JAVA之间的关系 汇编,C语言,C可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C&#xff0c…

分享一下微信商城如何添加新客有礼活动

一、新客有礼活动的优势 新客有礼活动是一种非常有效的营销策略,通过向新用户提供优惠和礼品,可以吸引更多的用户关注和购买。以下是一些新客有礼活动的优势: 吸引新用户:新客有礼活动可以吸引更多的新用户关注和购买&#xff0c…

12306 抢票小助手: 完整易用的抢票解决方案 | 开源日报 0917

testerSunshine/12306 Stars: 31.4k License: MIT 12306 购票小助手是一个使用 Python 编写的项目,主要功能包括自动打码、自动登录、准点预售和捡漏、智能候补以及邮件通知等。该项目具有以下核心优势: 支持多个版本的 Python提供验证码本地识别功能可…

docker四种网络模式

文章目录 一.为什么要了解docker网络二.docker 网络理论三.docker的四类网络模式3.1 bridge模式3.2 host模式3.3 container模式3.4 none模式 四.bridge模式下容器的通信4.1 防火墙开启状态4.2 防火墙关闭状态 一.为什么要了解docker网络 当你开始大规模使用Docker时&#xff0…

Springboot部署服务器项目上线

第一步,项目打包,有两种方式 第一种、直接在项目根目录打开终端,输入以下语句即可。如下图: mvn clean package -DskipTests 第二种、在右侧点击 Maven选项,选择鼠标左键双击package选项即可。如下图: 两…

CocosCreator3.8研究笔记(十七)CocosCreator UI组件(一)

CocosCreator 中,用户界面 User-interface(UI)组件和2d渲染对象的区别在于2D 渲染对象一般只负责将2D 对象渲染出来,而 UI 则更多的承担着用户交互的能力。 常用的 UI 控件可通过添加节点的方式来创建。 在 层级管理器 中点击左上…