• 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()
    为什么要这样写的,为了是节省代码,操作方便,这种写代码的方式,工作中会经常用到
  • 相关阅读:
    201621123037 《Java程序设计》第9周学习总结
    201621123037 《Java程序设计》第8周学习总结
    201621123037 《Java程序设计》第7周学习总结
    201621123037 《Java程序设计》第6周学习总结
    201621123037 《Java学习设计》 第五周学习总结
    201621123037 《Java程序设计》第4周学习总结
    201621123037 《Java程序设计》第3周学习总结
    myeclipse报Unhandld event loop Exception怎么解决
    Ajax 完整教程
    在JSP程序中我用新图片替换掉了原图片(名字,格式相同),为什么打开网页显示的还是以前的图片呢
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/13672100.html
Copyright © 2020-2023  润新知