知识周汇 | Python操作Excel全攻略系列(一):模块详解篇

目录

系列文章

前言

1 知识概览

2 模块详解

2.1 openpyxl

2.2 pandas

2.3 xlrd

2.4 xlwt

2.5 xlsxwriter

2.6 xlwing

3 后续


系列文章

知识周汇 | Python操作Excel全攻略系列(二):文件操作篇

知识周汇 | Python操作Excel全攻略系列(三):sheet操作篇

知识周汇 | Python操作Excel全攻略系列(四):单元格相关篇

知识周汇 | Python操作Excel全攻略系列(五):格式美化篇

前言

作为现代职场不可或缺的利器,Excel以其卓越的数据处理能力,稳居办公软件使用率之首。无论是面对海量数据的深度分析与整理,还是实现业务信息的系统化收集与管理,亦或是打造专业精准的报表体系,Excel始终扮演着无可替代的关键角色。本系列教程旨在系统化地讲解Python操作Excel的核心技能,精心规划为五大专题:模块详解篇、文件操作篇、工作表掌控篇、数据处理篇以及格式美化篇。

1 知识概览

工作簿(Workbook):Excel的最高层级文件,文件扩展名为.xlsx或.xls,包含一个或多个工作表,可存储数据、公式、图表等

工作表(Sheet/Worksheet):工作簿中的单个页面,由行列组成的网格,可重命名、添加、删除,默认名称Sheet1、Sheet2等

单元格(Cell):行列交叉形成的单个格子,数据存储的基本单位,由列标和行号定位(如A1),输入数据、公式等

列(Column):垂直方向的单元格集合,用字母标识(A、B、...、Z、AA、AB等),共16,384列(Excel 2007及以上)

行(Row):水平方向的单元格集合,用数字标识(1、2、3...),共1,048,576行(Excel 2007及以上)

 处理excel表的模块主要有以下几个:

  1. openpyxl:适用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件。提供了丰富的API来操作Excel文件,包括读取、写入、修改单元格内容、样式设置等。感兴趣可以读一下英文文档openpyxl英文文档

  2. pandas:这个库是一个超级强大的数据分析库,通过read_excel()to_excel()方法,可以轻松地将Excel文件读取为DataFrame或将DataFrame写入Excel文件。pandas英文文档

  3. xlrd:用于读取Excel文件(支持xls和xlsx格式)。注意:xlrd 2.0.0及以上版本不再支持xlsx文件的读取,如果需要读取xlsx文件,建议使用openpyxl或pandas。xlrd英文文档

  4. xlwt:用于写入Excel文件(仅支持xls格式)。提供了创建和修改Excel文件的功能,但不支持xlsx格式。xlwt英文文档

  5. xlsxwriter:用于创建和写入Excel文件(支持xlsx格式)。提供了丰富的功能,包括格式化、图表、公式等,但不支持读取Excel文件。xlsxwriter英文文档

  6. xlwing: 是一个 Python 库,用于与 Excel 文件交互、自动化 Excel 任务,并实现 Python 与 Excel 的无缝集成。xlwing英文文档

2 模块详解

以下内容均摘录自相关英文文献,并附有简要解读,旨在为读者提供基础概念,需要详细了解还需要读取英文文档

2.1 openpyxl

from openpyxl import Workbook
wb = Workbook()

# grab the active worksheet
ws = wb.active

# Data can be assigned directly to cells
ws['A1'] = 42

# Rows can also be appended
ws.append([1, 2, 3])

# Python types will automatically be converted
import datetime
ws['A3'] = datetime.datetime.now()

# Save the file
wb.save("sample.xlsx")

输出结果

2.1.1 导入 Workbook 类

from openpyxl import Workbook
  • openpyxl 是一个用于读写 Excel 文件的 Python 库。

  • Workbook 是 openpyxl 中的一个类,用于创建一个新的 Excel 工作簿。

2.1.2 创建一个新的工作簿

wb = Workbook()
  • Workbook() 创建一个新的 Excel 工作簿对象,并将其赋值给变量 wb

  • 默认情况下,新工作簿会包含一个名为 Sheet 的工作表。

2.1.3 获取活动工作表

ws = wb.active
  • wb.active 返回当前活动的工作表(即默认创建的第一个工作表)。

  • 将其赋值给变量 ws,以便后续操作。

2.1.4 直接向单元格赋值

ws['A1'] = 42
  • 将值 42 写入工作表的 A1 单元格。

  • Excel 单元格可以通过类似 A1 的坐标直接访问。

2.1.5 追加一行数据

ws.append([1, 2, 3])
  • append() 方法用于在工作表的末尾追加一行数据。

  • 这里追加了一个包含 [1, 2, 3] 的列表,数据会依次写入当前行的第一、第二和第三列。

2.1.6 自动转换 Python 类型

import datetime
ws['A2'] = datetime.datetime.now()
  • 导入 datetime 模块,用于获取当前时间。

  • datetime.datetime.now() 返回当前的日期和时间。

  • 将该值写入 A2 单元格。openpyxl 会自动将 Python 的 datetime 对象转换为 Excel 支持的日期时间格式。

2.1.7 保存文件

wb.save("sample.xlsx")
  • save() 方法将工作簿保存为指定的文件名(这里是 sample.xlsx)。

  • 如果文件已存在,则会覆盖;如果不存在,则会创建新文件。

2.2 pandas

pd.read_excel('tmp.xlsx')

读取excel表,pd.read_excel():这是 pandas 库中用于读取 Excel 文件的函数。它可以将 Excel 文件的内容加载为一个 DataFrame。'tmp.xlsx':这是要读取的 Excel 文件的路径。文件名为 tmp.xlsx,假设它与代码在同一目录下。pandas是一个很强大的数据分析模块,需要了解掌握建议可以读一下它的英文文档或者相关书籍。

    2.3 xlrd

    import xlrd
    book = xlrd.open_workbook("sample.xls")
    print("The number of worksheets is {0}".format(book.nsheets))
    print("Worksheet name(s): {0}".format(book.sheet_names()))
    sh = book.sheet_by_index(0)
    print("{0} {1} {2}".format(sh.name, sh.nrows, sh.ncols))
    print("Cell D30 is {0}".format(sh.cell_value(rowx=1, colx=2)))
    for rx in range(sh.nrows):
        print(sh.row(rx))

    输出结果示例:

    2.3.1 导入 xlrd 库

    import xlrd
    • xlrd 是一个用于读取 Excel 文件的 Python 库,支持 .xls 格式(旧版 Excel 文件)。

    • 注意:xlrd 从 2.0.0 版本开始不再支持 .xlsx 格式,如果需要读取 .xlsx 文件,可以使用 openpyxl 或 pandas

    2.3.2 打开 Excel 文件

    book = xlrd.open_workbook("sample.xls")
    • xlrd.open_workbook() 打开指定的 Excel 文件(这里是 sample.xls),并返回一个 Book 对象。

    • Book 对象表示整个 Excel 文件,包含所有工作表和数据。

    2.3.3 打印工作表的数量

    print("The number of worksheets is {0}".format(book.nsheets))
    • book.nsheets 返回 Excel 文件中工作表的数量。

    • 使用 format() 方法将数量插入到输出字符串中。

    2.3.4 打印工作表的名称

    print("Worksheet name(s): {0}".format(book.sheet_names()))
    • book.sheet_names() 返回一个列表,包含所有工作表的名称。

    • 使用 format() 方法将工作表名称列表插入到输出字符串中。

    2.3.5 获取第一个工作表

    sh = book.sheet_by_index(0)
    • book.sheet_by_index(0) 根据索引获取第一个工作表(索引从 0 开始)。

    • 返回一个 Sheet 对象,表示该工作表。

    2.3.6 打印工作表的基本信息

    print("{0} {1} {2}".format(sh.name, sh.nrows, sh.ncols))
    • sh.name:工作表的名称。

    • sh.nrows:工作表的行数。

    • sh.ncols:工作表的列数。

    • 使用 format() 方法将这些信息插入到输出字符串中。

    2.3.7 读取特定单元格的值

    print("Cell D30 is {0}".format(sh.cell_value(rowx=1, colx=2)))
    • sh.cell_value(rowx=1, colx=2) 读取指定单元格的值。

      • rowx=1:行索引(从 0 开始,所以 1 表示第二行)。

      • colx=2:列索引(从 0 开始,所以 2 表示第三列,即 C 列)。

    • 注意:这里代码中的注释是 Cell D30,但实际读取的是 C2 单元格的值(因为 rowx=1, colx=2 对应的是第二行第三列)。

    2.3.8 遍历工作表的每一行

    for rx in range(sh.nrows):
        print(sh.row(rx))
    • sh.nrows 是工作表的行数。

    • sh.row(rx) 返回指定行的所有单元格数据,以列表形式返回。

    • 使用 for 循环遍历每一行,并打印该行的数据。

    2.4 xlwt

    import xlwt
    
    # Create a workbook
    workbook = xlwt.Workbook()
    
    # Add a sheet
    sheet = workbook.add_sheet('Sheet1')
    
    # Write data
    sheet.write(0, 0, 'Name')
    sheet.write(0, 1, 'Age')
    sheet.write(1, 0, 'Alice')
    sheet.write(1, 1, 30)
    sheet.write(2, 0, 'Bob')
    sheet.write(2, 1, 25)
    
    # Save the workbook
    workbook.save('example.xls')

    运行结果:

    2.4.1 导入 xlwt 库

    import xlwt
    • xlwt 是一个用于创建和写入 Excel 文件的 Python 库,支持 .xls 格式(旧版 Excel 文件)。

    • 注意:xlwt 不支持 .xlsx 格式,如果需要创建 .xlsx 文件,可以使用 openpyxl 或 pandas

    2.4.2 创建一个工作簿

    workbook = xlwt.Workbook()
    • xlwt.Workbook() 创建一个新的 Excel 工作簿对象,并将其赋值给变量 workbook

    • 工作簿是 Excel 文件的顶层容器,可以包含多个工作表。

    2.4.3 添加一个工作表

    sheet = workbook.add_sheet('Sheet1')
    • workbook.add_sheet('Sheet1') 在工作簿中添加一个名为 Sheet1 的工作表。

    • 返回一个 Worksheet 对象,表示该工作表,并将其赋值给变量 sheet

    2.4.4 写入数据

    sheet.write(0, 0, 'Name')
    sheet.write(0, 1, 'Age')
    sheet.write(1, 0, 'Alice')
    sheet.write(1, 1, 30)
    sheet.write(2, 0, 'Bob')
    sheet.write(2, 1, 25)
    • sheet.write(row, col, value) 用于向工作表的指定单元格写入数据。

      • row:行索引(从 0 开始)。

      • col:列索引(从 0 开始)。

      • value:要写入的值(可以是字符串、数字等)。

    • 代码中写入的数据如下:

      • 第一行:A1 单元格写入 NameB1 单元格写入 Age

      • 第二行:A2 单元格写入 AliceB2 单元格写入 30

      • 第三行:A3 单元格写入 BobB3 单元格写入 25

    2.4.5 保存工作簿

    workbook.save('example.xls')
    • workbook.save('example.xls') 将工作簿保存为指定的文件名(这里是 example.xls)。

    • 如果文件已存在,则会覆盖;如果不存在,则会创建新文件。

    2.5 xlsxwriter

    import xlsxwriter
    
    workbook = xlsxwriter.Workbook('hello.xlsx')
    worksheet = workbook.add_worksheet()
    
    worksheet.write('A1', 'Hello world')
    
    workbook.close()

    运行结果:

    2.5.1 导入 xlsxwriter 库

    import xlsxwriter
    • xlsxwriter 是一个用于创建和写入 Excel 文件的 Python 库,支持 .xlsx 格式(新版 Excel 文件)。

    • 它提供了丰富的功能,如设置单元格样式、添加图表、公式等。

    2.5.2 创建一个工作簿

    workbook = xlsxwriter.Workbook('hello.xlsx')
    • xlsxwriter.Workbook('hello.xlsx') 创建一个新的 Excel 工作簿对象,并将其赋值给变量 workbook

    • 参数 'hello.xlsx' 是保存文件的路径和名称。

    • 如果文件已存在,则会被覆盖;如果不存在,则会创建新文件。

    2.5.3 添加一个工作表

    worksheet = workbook.add_worksheet()
    • workbook.add_worksheet() 在工作簿中添加一个新的工作表。

    • 默认情况下,工作表的名称为 Sheet1,但可以通过传递参数指定名称,例如:

      worksheet = workbook.add_worksheet('MySheet')
    • 返回一个 Worksheet 对象,表示该工作表,并将其赋值给变量 worksheet

    2.5.4 向单元格写入数据

    worksheet.write('A1', 'Hello world')
    • worksheet.write('A1', 'Hello world') 向工作表的 A1 单元格写入字符串 Hello world

    • write() 方法的第一个参数是单元格的坐标(如 A1),第二个参数是要写入的值(可以是字符串、数字、公式等)。

    2.5.5 关闭工作簿

    workbook.close()
    • workbook.close() 关闭工作簿并保存文件。

    • 在 xlsxwriter 中,必须显式调用 close() 方法,否则文件可能无法正确保存。

    2.6 xlwing

    import xlwings as xw
    
    wb = xw.Book('FileName.xlsx')  # connect to a file that is open or in the current working directory
    
    sheet = wb.sheets['Sheet']
    sheet['A1'].value = 'Foo 1'
    
    wb.save()
    wb.close()
    

    运行结果:

    2.6.1 导入 xlwings 库

    import xlwings as xw
    • xlwings 是一个用于与 Excel 交互的 Python 库,支持 .xlsx 和 .xls 格式。

    • 它允许 Python 代码与 Excel 文件进行双向交互(读取和写入)。

    2.6.2 连接到 Excel 文件

    wb = xw.Book('FileName.xlsx')
    • xw.Book('FileName.xlsx') 打开指定的 Excel 文件(这里是 FileName.xlsx),并返回一个 Book 对象。

    • 如果文件已打开,xlwings 会直接连接到已打开的文件;如果文件未打开,则会从当前工作目录中加载文件。

    • 如果文件不存在,会抛出错误。

    2.6.3 获取工作表

    sheet = wb.sheets['Sheet']
    • wb.sheets['Sheet'] 获取工作簿中名为 Sheet 的工作表。

    • 返回一个 Sheet 对象,表示该工作表,并将其赋值给变量 sheet

    2.6.4 向单元格写入数据

    sheet['A1'].value = 'Foo 1'
    • sheet['A1'].value = 'Foo 1' 向工作表的 A1 单元格写入字符串 Foo 1

    • value 属性用于读取或写入单元格的值。

    2.6.5 保存工作簿

    wb.save()
    • wb.save() 保存对工作簿的更改。

    • 如果文件未保存过,则会保存到当前工作目录;如果文件已存在,则会覆盖原文件。

    2.6.6 关闭工作簿

    wb.close()
    • wb.close() 关闭工作簿。

    • 关闭后,Python 与 Excel 文件的连接将断开。

    3 后续

    后续将通过常见案例讲解Excel表的实际应用场景。分享自己的学习感受,尤其是对于非程序员来说,不必过于纠结代码细节,比如为什么是import pandas as pd而不是import pandas as pdx重点在于理解代码的功能,即使不完全明白也没关系,只要能解决工作中的实际问题就足够了。当我们把编程当作工具使用时,不知不觉中就会进步。知识是网状的,不是线性的,随着每个知识点的积累,它们会自然而然地连接起来。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值