股东分析报表程序思路

股东分析报表程序思路

(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 xlrd
    book = xlrd.open_workbook(xls_path)
    index = 0
    nrows, ncols = 0, 0
    sheet = book.sheet_by_index(0)
    while nrows * ncols == 0:
        sheet = book.sheet_by_index(index)
        nrows = sheet.nrows
        ncols = sheet.ncols
        index += 1

    # prepare a xlsx sheet
    book_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 Template

def 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()

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

这就是写代码了,获取excel数据然后开始各种的数据分析,放进一个一个数据结构中扔给jinja模板里,这里还有一个问题,就是内部股东,内部股东是一个名单,我的做法是写一个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界面了,直接命令行用用吧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值