• Python【操作EXCEL文件】


    #Python中,对EXCEL文件的读写操作需要安装、导入几个第三方模块
    #xlrd模块:只能读取EXCEL文件,不能进行写操作
    #xlwt模块:只能进行写操作,但是不能是覆盖写操作(也就是修改Excel文件),一旦覆盖写操作,会报错
    #xlutils模块:由于xlrd只能读操作,xlwt不能覆盖写操作,因为涉及到修改Excel文件中的内容,我们需要借助xlutils模块

    print("==============读EXCEL文件=============")
    import xlrd
    #
    # #打开一个EXCEL文件
    # rbook = xlrd.open_workbook("app_student.xls")
    #
    # #获取EXCEL中的页
    # rsheet = rbook.sheet_by_index(0)
    # rsheet = rbook.sheet_by_name("sheet1")
    #
    # #总行数
    # print(rsheet.nrows)
    #
    # #总列数
    # print(rsheet.ncols)
    #
    # #得到指定单元格的值
    # print(rsheet.cell(0,0)) # 结果输出:text:'编号',是一个xlrd.sheet.Cell类
    # print(rsheet.cell_value(0,0)) #结果输出字符串:编号
    # print(rsheet.cell(0,0).value) #结果输出字符串:编号
    #
    # #遍历每一行的数据,返回一个list
    # for i in range(rsheet.nrows):
    # print(type(rsheet.row_values(i)))
    # print(rsheet.row_values(i))
    #
    # #遍历每一列的数据,返回一个list
    # for i in range(rsheet.ncols):
    # print(type(rsheet.col_values(i)))
    # print(rsheet.col_values(i))


    print("============写EXCEL=============")
    import xlwt
    import pymysql
    # wbook = xlwt.Workbook()
    # wsheet = wbook.add_sheet("sheet1")
    # wsheet.write(0,0,"编号")
    # wsheet.write(0,1,"姓名")
    # wsheet.write(0,2,"性别")
    # wbook.save("student.xls")

    print("==========导出数据到Excel方法一========")
    def export_excel(table_name):
    host, user, passwd, db = '127.0.0.1', 'jxz', '123456', 'jxz'
    coon = pymysql.connect(user=user, host=host, port=3306, passwd=passwd, db=db, charset='utf8')
    cur = coon.cursor() # 建立一个普通游标
    #cur = coon.cursor(cursor=pymysql.cursors.DictCursor) # 建立字典游标
    sql = 'select * from %s ;'%table_name
    cur.execute(sql) # 执行sql
    fileds = [filed[0] for filed in cur.description] #所有的字段,cur.description 是一个二维元组
    all_data = cur.fetchall() #cur.fetchall()返回的是一个二维元组
    #cur.fetchmany() # 能传入一个数,返回多少条数据
    #cur.fetchone() # 返回一条数据
    wbook = xlwt.Workbook()
    wsheet = wbook.add_sheet('sheet1')
    for col,filed in enumerate(fileds): #写表头的
    wsheet.write(0,col,filed)
    row = 1 #行数
    for data in all_data: #行
    for col, filed in enumerate(data): # 控制列
    wsheet.write(row, col, filed)
    row+=1#每次写完一行,行就加1
    wbook.save('%s.xls'%table_name)
    export_excel('app_student')

    print("============修改Excel=============")
    import xlutils.copy #或者:from xlutils import copy

    #1、先用xlrd模块,打开一个excel
    newbook = xlrd.open_workbook("app_student.xls")

    #2、通过xlutils这个模块里面copy方法,复制一份excel
    newbook = xlutils.copy.copy(newbook)

    #3、获取sheet页
    newsheet = newbook.get_sheet(0)
    lis = ['编号','名字','性别','年龄','地址','班级','手机号','金币']
    for col,filed in enumerate(lis):
    newsheet.write(0,col,filed)
    newbook.save('app_student_new.xls')
    1 pymysql 字典游标数据格式
    2 [{'gold': 999, 'grade': '天蝎', 'phone': '13444444443', 'id': 1, 'age': 0, 'addr': 'testsql', 'sex': '1', 'name': 'AAA'}]
    3 
    4 
    5 pymysql 普通游标数据格式:
    6 ((1, 'AAA', '1', 0, 'testsql', '天蝎', '13444444443', 999))
    
    
    
     
  • 相关阅读:
    2017.10.30 天晴 昨天十公里没减肥
    我的一辩论点,随心而论
    2017.10.27 多云 天气晴
    2017.10.14 多云 天气转冷
    2017.10.9 天晴 准备减肥,有一起打卡的吗
    2017.10.7 国庆第8天
    2017.10.7 国庆第7天{鳏寡孤独}
    java多线程概念
    spring mvc分拣查询参数
    spring mvc 导出excel
  • 原文地址:https://www.cnblogs.com/mtszw/p/9021877.html
Copyright © 2020-2023  润新知