zoukankan      html  css  js  c++  java
  • python 操作extel实战之写一个函数,传入一个表名,导出到excel中

    需求:写一个函数,传入一个表名,把这个表里面的数据导出到excel中

    def export_excel('students'):
    pass
    students.xls

    import pymysql ,xlwt
    name=input('输入你要传入的表名:').strip()
    #连接数据库
    connect = pymysql.connect(host='118.24.3.40',user='jxz',
    password='123456',
    port=3306,db='jxz',
    autocommit=True,charset='utf8')
    cur=connect.cursor(pymysql.cursors.DictCursor)#建立游标
    tab_sql="SELECT table_name FROM information_schema.TABLES WHERE table_name ='%s';"%name
    cur.execute(tab_sql)
    if cur.fetchall():#判断有没有结果
    quer_sql='select * from %s;'%name
    cur.execute(quer_sql)#执行sql
    data=cur.fetchall()#拿到表中的数据
    #拿到表头两个方法一个是du,另一种在游标改变成字典取key
    if data:
    book=xlwt.Workbook()#没有处理表头
    sheet=book.add_sheet('sheet')
    for index,key in enumerate(data[0]):#表头写到数据库里去
    sheet.write(0,index,key)
    for row,item in enumerate(data,1):#行的逻辑从第一行开始写 内容写进数据库
    for col,value in enumerate(item.values()):#列的逻辑
    sheet.write(row,col,value)
    book.save(name+'.xls')
    print('导出完成')
    else:
    print('表中无数据,无法导出')
    else:
    print('表不存在')

     思维导图这样这样分析

     封装数据库和写extel的方法文件并且起名字为tools,记住导入tools文件要先将这个文件的为文件夹手动变成环境变量

    import pymysql,traceback,xlwt
    #封装连接数据库和写进extel的操作
    MYSQL_INFO={
    'host' :'118.24.3.40',
    'user' : 'jxz',
    'password' :'123456', # 字符串
    'db':'jxz',
    'port':3306, # int类型}
    'host':'118.24.3.40',
    'user':'jxz',
    'password':'123456', # 字符串
    'db':'jxz',
    'port':3306} # int类型
    def execute_sql(sql):
    coon = pymysql.connect(**MYSQL_INFO)
    cur = coon.cursor(pymysql.cursors.DictCursor) # 建立游标,仓库管理员
    try:
    cur.execute(sql)#执行sql语句
    except:
    print('sql语句不正确')
    traceback.print_exc()#打印报错信息强制打印
    else:#正确了执行这条
    return cur.fetchall()
    finally:#走不走都执行这个命令
    coon.close()
    cur.close()
    def write(name,data):
    book = xlwt.Workbook() # 没有处理表头
    sheet = book.add_sheet('sheet1')
    for index, key in enumerate(data[0]):#写表头
    sheet.write(0, index, key)

    for row, item in enumerate(data, 1): # 行的逻辑从第一行开始写
    for col, value in enumerate(item.values()): # 列的逻辑
    sheet.write(row, col, value)
    book.save(name + '.xls')
    # print('导出完成')

    写一个总函数的入口去调用
    #发邮件
    #mysql
    #异常处理
    #操作extel
    import pymysql ,xlwt,tools
    def main():
    table_name=input('输入你要传入的表名:').strip()
    table_exist_sql="SELECT table_name FROM information_schema.TABLES WHERE table_name ='%s';"%table_name
    if tools.execute_sql(table_exist_sql):
    query_sql = 'select * from %s;'%table_name
    data=tools.execute_sql(query_sql)
    if data:
    tools.write(table_name,data)
    print('导出完成')
    else:
    print('表里没有数据')
    else:
    print('表不存在')
    main()
    为什么要这样写的,为了是节省代码,操作方便,这种写代码的方式,工作中会经常用到
  • 相关阅读:
    DPM(Deformable Part Model)原理详解(汇总)
    VS code配置docker的shell环境
    C++运算符重载规则
    typedef 和define的区别
    在ESP分区新建win10引导
    自动化学报投稿过程记录
    shell-grep命令详解(转)
    shell-sed命令详解(转)
    shell-命令行参数(转)
    sublimetext3-实用快捷键整理
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/13672100.html
Copyright © 2011-2022 走看看