Python 操作Excel表格详解、xlrd 和 xlwt、快速上手实战应用

一、模块简介

xlrd介绍
  • xlrd是Python用来读取excel表格中数据的;
  • 支持xls和xlsx类型的excel文件;
xlwt介绍
  • xlwt是Python用来写入excel表格数据的三方库;
  • Python那种一般使用xlrd读取excel数据,使用xlwt写入excel数据
操作的excel表格信息

在这里插入图片描述
在这里插入图片描述

二、功能用法详解

xlrd用法详解

对上面表格信息进行操作,方面理解

# _*_ encoding:utf-8 _*_

import xlrd


# excel文件路径
excel_path = u'D:/extract/cs.xlsx'
# 打开excel表格
workbook = xlrd.open_workbook(excel_path)
# 获取所有sheet(工作薄)数目
print(workbook.sheets)                # 结果 : 2
# 获取所有的工作薄名称,返回一个list里面包含左右的sheet名称字符串
print(workbook.sheet_names())        # 结果 : ["学生信息", "学生地址"]
# 获取所有工作薄对象
print(workbook.sheets())              # 结果 : [<xlrd.sheet.Sheet object at 0x0000000013355438>, <xlrd.sheet.Sheet object at 0x00000000133554E0>]
# 根据索引获取对应的sheet对象,相当于workbook.sheets()[0]
print(workbook.sheet_by_index(0))       # 结果 : <xlrd.sheet.Sheet object at 0x0000000012F91438>
# 根据sheet名称获取sheet对象
print(workbook.sheet_by_name(u'学生信息'))  # 结果 : <xlrd.sheet.Sheet object at 0x0000000012F91438>

# todo 单独对一张表格进行操作
table = workbook.sheets()[0]
# 获取表格名称
print(table.name)               # 结果 : 学生信息
# 获取表格的行数
print(table.nrows)              # 结果 : 5
# 获取表格的列数
print(table.ncols)              # 结果 : 4
# 获取指定行数据,返回Cell对象list,获取第二行数据
print(table.row(1))
# 获取指定列数据,返回Cell对象list,获取第二列数据
print(table.col(1))
# 获取指定行数据,返回list,获取第三行数据
print(table.row_values(2))     # 结果 : ["大花", 5.0, "女", "二年级"]
# 获取指定列数据,返回list,获取第二行数据
print(table.col_values(1))     # 结果 : ["年龄", 3.0, 5.0, 8.0, 6.0]
# 获取指定位置的数据,第二行,第四列
print(table.cell_value(1,3))    # 结果 : 一年级

xlwt用法详解

这里这篇文章写的很好,推荐参考一下,博主这里就偷一下懒,哈哈哈,
python xlwt写入excel操作

三、用法实战

将excel文件中数据读取,并且转换成如下格式

'''
{   '学生信息':[{'姓名':'','年龄':'','性别':'','班级':''},{..}...]
    '学生地址':[{'姓名':'','地址':'','邮编':'',},{..}...]
}
'''
xlrd读取表格中所有数据
# _*_ encoding:utf-8 _*_

import xlrd


def xlrd_excel(excel_path):
    # 数据格式化字典
    data_info = {}
    # 读取文件
    workbook = xlrd.open_workbook(excel_path)
    # 遍历工作薄sheet
    for table in workbook.sheets():
        # 存放字典信息的list
        info_list = []
        table_name = table.name             # sheet名称
        table_top = table.row_values(0)     # sheet 表头
        # 根据行数遍历表格数据,剔除表头信息
        for i in range(1,table.nrows):
            row_info = table.row_values(i)              # 获取指定行数据
            # 将list中的数据float类型转成int
            row_info = [int(f) if isinstance(f,float) else f for f in row_info]
            row_dict = dict(zip(table_top,row_info))    # 将表头与行数据转换成字典格式
            # row_dict 结果 {"地址": "北京", "邮编": 1001.0, "姓名": "二狗"}
            info_list.append(row_dict)
        data_info[table_name] = info_list
    return data_info


excel_path = u'D:/extract/cs.xlsx'
print(xlrd_excel(excel_path))

xlrd读取表格结果
{"学生信息": [{"年龄": 3, "性别": "狗", "班级": "一年级", "姓名": "二狗"}, {"年龄": 5, "性别": "女", "班级": "二年级", "姓名": "大花"},
          {"年龄": 8, "性别": "男", "班级": "三年级", "姓名": "张三"}, {"年龄": 6, "性别": "男", "班级": "二年级", "姓名": "九瓜"}],
 "学生地址": [{"地址": "北京", "邮编": 1001, "姓名": "二狗"}, {"地址": "山东", "邮编": 1003, "姓名": "大花"},
          {"地址": "上海", "邮编": 1005, "姓名": "张三"}, {"地址": "河南", "邮编": 1000, "姓名": "九瓜"}]}
xlwt写入指定数据保存excel

将上面输出的格式化数据保存到excel文件中

# _*_ encoding:utf-8 _*_

import xlwt


def xlwt_excel(excel_path, data_info):
    # 创建workbook 设置编码
    work_book = xlwt.Workbook(encoding='utf-8')
    for key,info_lt in data_info.items():
        # 创建一个工作表sheet
        work_sheet = work_book.add_sheet(key)
        # 写入表头数据
        for i,f in enumerate(info_lt[0].keys()):
            work_sheet.write(0,i,f)
        # 遍历数据
        for index,dt in enumerate(info_lt):
            col = 0             # 列位置
            # 写入数据
            for _,v in dt.items():
                work_sheet.write(index + 1, col, v)
                col += 1
    # 保存数据
    work_book.save(excel_path)


dd = {"学生信息": [{"年龄": 3, "性别": "狗", "班级": "一年级", "姓名": "二狗"}, {"年龄": 5, "性别": "女", "班级": "二年级", "姓名": "大花"},
          {"年龄": 8, "性别": "男", "班级": "三年级", "姓名": "张三"}, {"年龄": 6, "性别": "男", "班级": "二年级", "姓名": "九瓜"}],
 "学生地址": [{"地址": "北京", "邮编": 1001, "姓名": "二狗"}, {"地址": "山东", "邮编": 1003, "姓名": "大花"},
          {"地址": "上海", "邮编": 1005, "姓名": "张三"}, {"地址": "河南", "邮编": 1000, "姓名": "九瓜"}]}
excel_path = u'D:/extract/xlwt.xls'
xlwt_excel(excel_path, dd)
xlwt写入excel结果

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值