最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python如何操作excel

    正文概述    2020-02-24   220

    Python如何操作excel

    python操作excel需要使用的模块有xlrd、xlwt、xlutils。对excel进行读、写、更新操作。操作excel时需要先导入这些模块,demo如下:

    excel-读操作知识点:

    import xlrd
    '''
    读取 excel的操作步骤如下:
    1. 打开excel,打开的excel必须存在
    2. 获取sheet对象
    3. 对excel进行操作:
        获取excel的总行数、总列数、读取excel每一行的数据、读取excel每一列的数据、获取某个单元格的值
    '''
    #打开excel,打开的excel必须存在,返回book对象
    book = xlrd.open_workbook('students.xlsx')
    #通过索引获取sheet对象
    sheet = book.sheet_by_index(0)
    #有多个sheet页时可以通过sheet的名称来获取sheet对象
    sheet1 = book.sheet_by_name('Sheet1')
    
    #获取excel的总行数,
    rows = sheet.nrows
    #获取excel的总列数
    cols = sheet.ncols
    #获取excel第2行的数据,返回结果为list:[2.0, 'b', 'women']
    row_value = sheet.row_values(2)
    #获取excel第1列的数据,返回结果为list:['name', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '小白', '小黑']
    col_values = sheet.col_values(1)
    #获取单元格第8行第1列的数据,返回结果为text: text:'小白'
    cell_value = sheet.cell(8, 1)
    #将text类型的结果转换为str类型:小白
    cell_str = sheet.cell(8, 1).value

    注意:获取每行、每列、某个单元格的值时,注意行、列的值要存在,否则会报错:list index out of range

    excel - 读取excel小案例:

    import xlrd
    '''
    读取excel的数据,读取数据的列固定,循环读取每行数据,读取后的数据格式如下:
    [
    {'name':xxx,'sex':xxx,'id':1},
    {'name':xxx,'sex':xxx,'id':1},
    .......
    ]
    '''
    def readExcel():
        try:
            #若输入的excel不存在,则打开excel报错
            book = xlrd.open_workbook('students.xlsx')
        except Exception as e:
            print('error msg:', e)
        else:
            sheet = book.sheet_by_index(0)
            #获取excel的总行数
            rows = sheet.nrows
            stu_list = []
            #循环读取每行数据,第0行是表头信息,所以从第1行读取数据
            for row in range(1, rows):
                stu = {}
                #获取第row行的第0列所有数据
                id = sheet.cell(row, 0).value
                name = sheet.cell(row, 1).value
                sex = sheet.cell(row, 2).value
                #将id、name、sex添加到字典,若元素不存在则新增,否则是更新操作
                stu['id'] = id
                stu['name'] = name
                stu['sex'] = sex
                stu_list.append(stu)
            print(stu_list)
    if __name__ == '__main__':
        readExcel()

    excel数据格式如下:

    Python如何操作excel

    相关推荐:《Python视频教程》

    excel - 写操作知识点:

    import xlwt
    '''
    写 excel的操作步骤如下:
    1. 打开excel,打开不存在的excel,若打开已存在的excel,进行写操作,写入的数据会覆盖以前的数据
    2. 获取sheet对象并指定sheet的名称
    3. 对excel进行操作:
        写入excel、保存excel
    '''
    #打开excel创建book对象
    book = xlwt.Workbook()
    #创建sheet指定sheet名称
    sheet = book.add_sheet('stu2')
    #写入excel数据,第n行第n列写入某个值,写入的数据类型为str
    sheet.write(0, 0, '编号')
    sheet.write(0, 1, '姓名')
    sheet.write(0, 2, '年龄')
    #保存excel,保存的后缀必须是xls
    book.save('studet.xls')

    excel写入 新的excel后,数据格式如下:

    Python如何操作excel

    excel操作 已存在的excel,进行写操作后的 excel格式如下:

    Python如何操作excel

     ----> 

    Python如何操作excel

    excel - 写excel小案例:

    import xlwt
    '''
    将list数据:
    [{'name': '小白', 'id': 1.0, 'sex': '男'},
        {'name': '小花', 'id': 2.0, 'sex': '女'},
        {'name': '小黑', 'id': 3.0, 'sex': '男'},
         {'name': '小茹', 'id': 4.0, 'sex': '女'},
         {'name': '小小', 'id': 5.0, 'sex': '男'}]
    写入excel,title信息为:编号、姓名、性别
    '''
    def writeExcel():
        book = xlwt.Workbook()
        sheet = book.add_sheet('stu')
        titles = ['编号', '姓名', '性别']
        #循环读取titles的长度,col的值为:0,1,2,并将title值写入excel
        for title_col in range(len(titles)):
            #title 写入excel的第0行的第col列,写入titles[col]值
            sheet.write(0, title_col, titles[title_col])
        students_list = [{'name': '小白', 'id': 1.0, 'sex': '男'},{'name': '小花', 'id': 2.0, 'sex': '女'},
        {'name': '小黑', 'id': 3.0, 'sex': '男'},{'name': '小茹', 'id': 4.0, 'sex': '女'},
        {'name': '小小', 'id': 5.0, 'sex': '男'}]
        for stu_row in range(len(students_list)):
            #循环读取student_list的长度,从0开始,写入excel时从第1行开始写入数据
            #写入excel的数据是从list里进行取值,获取list的每个元素,返回字典,然后通过字典的key获取value
            sheet.write(stu_row+1, 0, students_list[stu_row]['id'])
            sheet.write(stu_row+1, 1, students_list[stu_row]['name'])
            sheet.write(stu_row+1, 2, students_list[stu_row]['sex'])
        book.save('student.xls')
        if __name__ == '__main__':
        writeExcel()

    excel数据格式如下:

    Python如何操作excel

    excel- 更新操作知识点:

    import xlrd
    from xlutils.copy import copy
    '''
    更新excel操作:
    1. 打开excel,更新的excel必须存在
    2. 复制一个新的excel,使用xlutils模块中的copy方法
    3. 更新excel内的数据
    4. 保存更新后的excel数据,以前的excel数据不会更改
    '''
    from xlutils.copy import copy
    #打开excel
    book = xlrd.open_workbook('student.xlsx')
    #复制一个新的excel
    new_book = copy(book)
    #查看某个对象下的所有方法
    #print(dir(new_book))
    #获取新excel的sheet对象
    sheet = new_book.get_sheet(0)
    #新增一列数据
    sheet.write(0, 3, '更新')
    #更新第4行第1列的值,将其修改为'郭静',修改的数据类型为str
    sheet.write(4, 1, '郭静')
    #保存更改后的excel,以前的excel数据不更改
    new_book.save('student.xls')

    以上为excel简单操作~~~~

    案例:

    写一个函数,传入一个表名,然后把这个表里面所有的数据导出excel里面。

    import pymysql
    import xlwt
    import hashlib
    dic = {
        "host": '192.1xx.xx.x',
        'user': 'mysql_xx',
        'password': 'xxx@123',
        'port': 3306,
        'db': 'user_xx'
    }
    #mysql 操作
    def op_mysql( sql, res_many=False):
        con = pymysql.connect(host=dic['host'], user=dic['user'], password=dic['password'], db=dic['db'], 
        port=dic['port'], charset='utf8', autocommit=True)
        cur = con.cursor(pymysql.cursors.DictCursor)
        cur.execute(sql)
        if res_many:
            res = cur.fetchall()
        else:
            res = cur.fetchone()
        cur.close()
        con.close()
        return res
    # 查询sql,将结果写入excel
    def op_table(table_name):
        sql = 'select * from {0};'.format(table_name)
        res_data = op_mysql(sql, res_many=True)  #返回结果是list [{},{}]
        book = xlwt.Workbook()
        sheet = book.add_sheet('标签')
        for row, row_data in enumerate(res_data):
            for col, col_key in enumerate(row_data):   # 获取下标、字典key
                if row == 0:
                    sheet.write(0, col, col_key)
                else:
                    sheet.write(row, col, row_data[col_key])
        book.save('label_data.xls')
    op_table('xxx_label')

     excel 插件效果:

    Python如何操作excel


    起源地下载网 » Python如何操作excel

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元