zoukankan      html  css  js  c++  java
  • 2020.10.13 Python 处理数据生成多Sheet Excel

    我不一个系统化,框架化的工作者,而是是一个解决问题的工作者。

    一、需求  

    1. 从Oracle数据库中取出符合要求的数据

    2. 对数据进行格式处理

    3.导出按部门保存到不同的sheet中

    工具: VS2019 ,Python 3.7 

    这里会涉及到一些需要用到的包, 可以用pip install  包名称 

    进行安装, 使用VS提供的扩展工具在3.7版本右键可以看到

    安装完成后,也行不能系统还是不能识别import 相应的包,建议重启VS

    如果VS中有中文出现一些提示不能解析,建议用Note 编辑工具,对.py文件进行编码转变, 转换为UTF-8

     3. 脚本,从Oracle里面获取需要的数据

    import cx_Oracle as cx

    访问Oracle数据库代码,有好几种方式,我只用了一种

    db2=cx.connect('soar','0000','192.168.10.25:1521/CQ')

    分别是: 账户,密码,IP,端口,实例名

    4. 定义SQL ,也就是你需要的数据

    sql3="select  role_name as 角色名称,parent_menu as 模块名称,menu_name as 菜单名称 from table1"

    也可以不重命名,我只是为了方便看而已, 这里会有一点其他的部分,比如你如果需要换行 ,这就会有一个斜杠可以用, 当然也有其他的方法,我只是为了我的实现目的,就没有去重新整理

    sql3="select  role_name as 角色名称,parent_menu as 模块名称,menu_name as 菜单名称 "  
          " from  table1"  

    执行得到结果集,并用键值对的方式呈现

    cr2=db2.cursor()
    
    cr2.execute(sql3) 
    rs2=cr2.fetchall()
    
    cr2.close()
    db2.close()

    这就有了游标的方法,关于fetchall() 还有一些其他的方法得到结果集,只是这里不会带出列名称,只有数据值,这就让我很不舒服了, 因为我需要把列名称导入到Excel里面去

    5. 获取数据后需要的,就是对数据进行处理,还包括了导入Excel数据应该要呈现的格式,我做这个项目,就是因为客户要不同部门的数据,部门又很多,在每个sheet里面格式又是客户提供的,我是没想一个一个去数据整理,还有格式优化。那会是重复切很无聊的工作

    尤其是又不是一两个sheet,是几百个sheet。。。这样我的心情就很不好。

    6. 导入需要的pandas部分

    import pandas as pd
    from styleframe import StyleFrame, Styler, utils

    7.对Excel格式进行修改跟配置

    sf = StyleFrame(pd.DataFrame(rs2,columns=['角色名称', '模块名称', '菜单名称']))  
    
    sf.apply_column_style(cols_to_style=["角色名称","模块名称","菜单名称"], 
                          styler_obj=Styler(font='Segoe UI', font_size=9 , bold=False , 
                                           horizontal_alignment=utils.horizontal_alignments.left , wrap_text=True),
                          style_header=True)
    sf.set_column_width(columns=["角色名称","模块名称","菜单名称"],width=20)
    
    ew = StyleFrame.ExcelWriter(r'D:\V1.xlsx')
    sf.to_excel(ew)
    ew.save()

    当然,这个列名是可以通过一定的方式从数据库中获取,来生成的, 我这里需要的不多,也固定,所以我懒了

    官网中有很多对 StyleFrame  的讲解, 我这里只用了简单的,对字体的设置, 列名的设置, 字体是否加粗,字体大小,字体摆放靠左,列的宽度。

    上面的代码,是一段一个Sheet的格式,

  • 相关阅读:
    进阶新的阶段--LCD
    UART的调试
    s5pv210的定时器
    s5pv210的外部中断
    按键的轮询
    点亮指路灯
    队列里面的二级指针
    链表实现学生成绩管理系统
    链表基本功能
    new的用法
  • 原文地址:https://www.cnblogs.com/Soar-Pang/p/13808970.html
Copyright © 2011-2022 走看看