当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程基础入门 > Python如何操作excel

Python如何操作excel

发布时间:2020年09月27日 08:55:27 来源: 点击量:439

【摘要】python操作excel需要使用的模块有xlrd、xlwt、xlutils。对excel进行读、写、更新操作。操作excel时需要先导入这些模块,demo如下: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 - 写操作知识点:

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后,数据格式如下:

excel操作 已存在的excel,进行写操作后的 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数据格式如下:

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 插件效果:

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部