博客
关于我
python读写excel之xlrd&xlwt&xlutils组合
阅读量:796 次
发布时间:2023-03-06

本文共 3101 字,大约阅读时间需要 10 分钟。

Python中操作Excel的库及其使用方法

前言

在进行数据处理时,Excel文件是非常常用的数据存储形式之一。对于Python开发者来说,能够方便地读取和写入Excel文件的库是日常工作中的重要工具。Python市场上有多个开源库可以实现Excel文件的读写操作,其中xlrd、xlwt、xlutils等是最常用的工具之一。本文将详细介绍这些库的特点以及如何使用它们来读取和写入Excel文件。


一、简介

在Python中,常用的操作Excel的库包括以下几种:

  • xlrd:用于读取 .xls 格式的Excel文件数据。
  • xlwt:用于将数据写入 .xls 格式的Excel文件。
  • openpyxl:支持读取和写入 .xlsx 格式的Excel文件。
  • pandas:通过xlrdxlwt模块实现 .xls 格式文件的读写操作。
  • win32com:通过Excel应用程序接口实现Excel文件的读写操作。
  • 这些库各有特点,选择合适的库取决于具体需求。


    二、库的特点

    1. xlrd 和 xlwt 的区别

    • xlrd:用于读取 .xls.xlsx 格式的Excel文件,返回Excel工作簿和工作表的对象。
    • xlwt:用于写入 .xls 格式的Excel文件,返回Excel工作簿和工作表的对象。

    虽然两者操作的对象不同,但它们都非常适合处理Excel文件的读写操作。xlrd和xlwt的主要优点是操作流程清晰,支持多层表头结构(与pandas的dataframe不同)。


    2. xlutils 的作用

    xlutils模块是xlrd和xlwt之间的桥梁。通过xlutils,可以将xlrd读取到的Excel文件直接转换为可写的xlwt对象,从而实现读写操作的无缝连接。xlutils的核心功能是通过copy模块中的copy函数,将xlrd的Book对象复制转换为xlwt的Workbook对象。


    三、Python其他常用Excel读写库

    除了上述库,以下是一些其他常用的Excel文件操作库:

    • openpyxl:支持读取和写入 .xlsx 格式的Excel文件,功能强大。
    • pandas:常用于数据分析的库,支持读写 .xls.xlsx 格式的Excel文件,输出为dataframe格式。

    更多Excel文件操作库可以参考以下链接:


    四、下载与安装

    1. 官网下载

    2. Windows黑窗口安装

    • xlrd:在命令提示符窗口中运行以下命令:

      pip install xlrd

      如果需要指定版本:

      pip install xlrd==2.1.0
    • xlwt:在命令提示符窗口中运行以下命令:

      pip install xlwt

      如果需要指定版本:

      pip install xlwt==1.3.0
    • xlutils:在命令提示符窗口中运行以下命令:

      pip install xlutils

      如果需要指定版本:

      pip install xlutils==2.0.0

    3. 查看版本

    • xlrd:在命令提示符窗口中运行:
      pip show xlrd
    • xlwt:在命令提示符窗口中运行:
      pip show xlwt
    • xlutils:在命令提示符窗口中运行:
      pip show xlutils

    五、xlrd 的使用

    在使用xlrd读取Excel文件之前,需要准备好Excel文件(如.xls.xlsx文件)。以下是使用xlrd读取Excel文件的基本流程:

    1. 打开工作簿

    import xlrd
    # 假设 filepath 是 Excel 文件的路径
    data = xlrd.open_workbook(filepath)

    运行结果会返回一个 xlrd.book.Book 对象。


    2. 工作表操作

    # 获取工作簿中的工作表数量
    sheet_count = data.nsheets
    # 获取所有工作表对象
    sheets = data.sheets()
    # 获取工作表名称列表
    sheet_names = data.sheet_names()
    # 通过索引获取工作表对象
    sheet = data.sheet_by_index(1)
    # 通过名称获取工作表对象
    sheet = data.sheet_by_name('绩效成绩')

    3. 行与列操作

    # 获取工作表中的有效行数和列数
    row_count = sheet.nrows
    col_count = sheet.ncols
    # 获取指定行的单元格对象
    row_object = sheet.row(1)
    # 获取指定行的单元格内容
    row_content = sheet.row_values(1)
    # 获取指定行的单元格数据类型
    row_type = sheet.row_types(1)
    # 获取指定行的单元格长度
    row_length = sheet.row_len(1)
    # 获取工作表所有行的生成器
    rows_generator = sheet.get_rows()
    list_generator = list(rows_generator)

    4. 单元格操作

    # 获取指定单元格内容
    cell_value = sheet.cell_value(1, 1)
    # 获取指定单元格对象
    cell_object = sheet.cell(1, 1)
    # 获取指定单元格数据类型
    cell_type = sheet.cell_type(1, 1)
    # 获取指定单元格内容的类型
    cell_content_type = type(sheet.cell_value(1, 1))

    5. 示例:读取并处理Excel文件

    假设我们有一个名为 xlrd实例文件.xlsx 的Excel文件,文件内容如下:

    姓名 工号 绩效成绩
    小红 2021001 100
    小橙 2021002 100
    小黄 2021003 90

    目标:通过xlrd读取绩效成绩工作表,计算每个员工的绩效工资(绩效成绩 × 10),并将结果写入新的Excel文件。

    import xlrd
    # 打开 Excel 文件
    data = xlrd.open_workbook("xlrd实例文件.xlsx")
    # 获取绩效成绩工作表
    performance_sheet = data.sheet_by_name('绩效成绩')
    # 获取除表头外的所有行
    rows_generator = list(performance_sheet.get_rows())[1:]
    # 初始化存储结果的列表
    row_list = []
    # 遍历每一行数据
    for row in rows_generator:
    name = row[0].value
    number = row[1].value
    score = row[2].value
    money = score * 10
    row_list.append((name, number, money))
    # 打印结果
    print(row_list)

    六、总结

    通过以上内容,我们可以看到,xlrd是一个非常方便的库,可以用来读取Excel文件的结构化数据。虽然它的操作流程稍微复杂一些,但它的灵活性和对多层表头结构的支持使其在数据处理中非常有用。

    转载地址:http://obofk.baihongyu.com/

    你可能感兴趣的文章
    Python Kivy库:跨平台应用开发
    查看>>
    python lambda表达式
    查看>>
    Python ldap3 代码从 SID 获取用户名
    查看>>
    Python list += iterable 的行为是否记录在任何地方?
    查看>>
    python list,str的拼接与转换
    查看>>
    python list函数使用总结_史上最全的Python数据结构:列表和元组用法总结
    查看>>
    python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据
    查看>>
    python locust 性能测试:locust安装和一些参数介绍
    查看>>
    python log
    查看>>
    python logging basicconfig_python之logging.basicConfig
    查看>>
    Python logging模块使用
    查看>>
    python logging模块学习
    查看>>
    python mac地址_python中MAC地址打包问题
    查看>>
    python manage.py syncdb Unknown command: 'syncdb'问题解决方法
    查看>>
    Python map() 函数 和 numpy mean()函数
    查看>>
    Python Matplotlib Box并排绘制两个数据集
    查看>>
    Python Matplotlib 中如何用 plt.savefig 存储图片
    查看>>
    Python matplotlib 中更换画布背景颜色
    查看>>
    python matplotlib简单使用
    查看>>
    Python mock Patch os.environ 和返回值
    查看>>