Python利用openpyxl库遍历Sheet的实例

yizhihongxing

下面是Python利用openpyxl库遍历Sheet的实例的完整实例教程:

环境准备

在使用openpyxl库之前,需要确保已经安装了该库。可以使用pip install openpyxl命令来安装它。

打开Excel文件

我们可以使用openpyxl库来打开一个Excel文件,从而遍历其中的Sheet。打开文件的方法是load_workbook()。具体用法如下:

from openpyxl import load_workbook

# 打开文件并读取第一个Sheet
wb = load_workbook(filename = 'example.xlsx')
sheet = wb.active

在这个例子中,我们打开了名为example.xlsx的Excel文件,并读取其中的第一个Sheet。请注意,active方法表示默认选中的Sheet,如果需要读取其他的Sheet,可以使用wb[str]方法,其中str代表Sheet的名称。

遍历Sheet

在打开Excel文件之后,我们就可以遍历其中的Sheet了。openpyxl库提供了两种遍历Sheet的方法:按行遍历和按列遍历。

按行遍历Sheet

按行遍历Sheet可以使用Sheet对象的iter_rows()方法。例如:

for row in sheet.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    print(row)

以上代码遍历了名为sheet的Sheet的第1行至第2行,第1列至第3列的单元格,并将其从左到右、从上到下分别输出。

其中,iter_rows()方法的参数含义如下:
- min_row:遍历的起始行,默认为第1行。
- max_row:遍历的结束行,默认为Sheet的最大行数。
- min_col:遍历的起始列,默认为第1列。
- max_col:遍历的结束列,默认为Sheet的最大列数。
- values_only:是否只遍历单元格的值,默认为False。如果为True,则只输出单元格的值而不是包含样式等信息的单元格对象。

按列遍历Sheet

按列遍历Sheet可以使用Sheet对象的iter_cols()方法。例如:

for col in sheet.iter_cols(min_row=1, max_col=3, max_row=2, values_only=True):
    print(col)

以上代码遍历了名为sheet的Sheet的第1列至第3列,第1行至第2行的单元格,并将其从上到下、从左到右分别输出。

其中,iter_cols()方法的参数含义与iter_rows()方法相同。

示例说明

接下来,我们来看两个具体的示例。

示例一

在这个示例中,我们从一个名为students.xlsx的Excel文件中读取并计算了每个学生的总分,并将结果输出到另一个Excel文件result.xlsx中。

首先,我们来看下原始的students.xlsx文件的内容。它有两个Sheet,分别为ChineseMath,每行内容表示一个学生的姓名、学号和成绩。ChineseMath中的学生可能有重复。请下载Excel文件,并将其保存到当前目录下。

接下来是完整代码的解释:

from openpyxl import load_workbook, Workbook

# 打开学生信息表,读取Chinese和Math两个Sheet
wb = load_workbook(filename='students.xlsx')
sheet_chinese = wb['Chinese']
sheet_math = wb['Math']

# 创建新表,准备输出结果
wb_out = Workbook()
sheet_out = wb_out.active
sheet_out.title = "Result"

# 读取学生信息表,计算总分
students = {}
for sheet in [sheet_chinese, sheet_math]:
    for row in sheet.iter_rows(min_row=2, values_only=True):
        name = row[0]
        id = row[1]
        score = row[2]
        if id not in students:
            students[id] = {'name':name, 'chinese':0, 'math':0}
        if sheet.title == 'Chinese':
            students[id]['chinese'] += score
        else:
            students[id]['math'] += score

# 输出结果到Result表
sheet_out.append(['姓名', '学号', '语文总分', '数学总分', '总分'])
for id in students.keys():
    name = students[id]['name']
    chinese = students[id]['chinese']
    math = students[id]['math']
    total = chinese + math
    sheet_out.append([name, id, chinese, math, total])

# 保存结果文件
wb_out.save('result.xlsx')

在这个示例中,我们先打开students.xlsx文件,并读取其ChineseMath两个Sheet。接着,我们在内存中创建一个新的Excel表格Result,并按照学生的学号计算他们的总分,并将结果输出到Result表中。最后,我们保存结果文件result.xlsx

运行上述代码之后,我们将得到一个新的Excel文件result.xlsx,其中包含了每个学生的总分信息。输出结果如下所示:

姓名 学号 语文总分 数学总分 总分
小明 1001 84 90 174
小红 1002 76 94 170
小刚 1003 80 82 162

示例二

在这个示例中,我们将遍历一个Excel文件中所有的Sheet,并输出它们的名称以及每个Sheet中前5行数据的内容。

首先,我们需要准备一个示例Excel文件,其中包含了三个Sheet,分别为Sheet1Sheet2Sheet3,每个Sheet包含10行10列的随机数值。请下载Excel文件,并将其保存到当前目录下。

接下来是完整代码的解释:

from openpyxl import load_workbook

# 打开Excel文件
wb = load_workbook(filename = 'example.xlsx')

# 遍历所有Sheet
for sheet in wb.worksheets:
    print("Sheet Name:", sheet.title)
    for row in sheet.iter_rows(min_row=1, max_row=5, values_only=True):
        print(row)

在这个示例中,我们使用了wb.worksheets属性来获取所有的Sheet,然后使用iter_rows方法按行遍历每个Sheet的前5行,并输出它们的内容。运行以上代码,我们将得到类似如下的输出:

Sheet Name: Sheet1
(54, 90, None, 48, 20, None, 91, 60, 61, 45)
(83, None, None, 16, 12, None, None, None, None, None)
(83, 15, None, None, None, 59, None, None, None, 24)
(3, None, None, 72, None, None, 47, None, None, None)
(28, 92, 45, None, 71, 48, None, None, None, None)
Sheet Name: Sheet2
(73, None, None, 99, 81, 12, 75, None, None, None)
(78, 20, None, None, None, None, None, None, None, 26)
(56, None, None, None, None, None, None, None, None, None)
(None, 53, None, None, None, None, None, None, None, 22)
(27, 63, None, None, None, None, None, None, None, None)
Sheet Name: Sheet3
(71, None, None, None, None, None, None, None, None, None)
(59, None, None, None, None, None, None, None, None, None)
(52, 1, None, None, None, 86, None, None, None, None)
(78, None, None, None, None, None, None, None, None, 36)
(25, 46, 5, None, None, None, None, 29, 21, 65)

以上就是Python利用openpyxl库遍历Sheet的实例的完整实例教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用openpyxl库遍历Sheet的实例 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 正则表达式性能优化方法(高效正则表达式书写)

    下面是详细的攻略: 正则表达式性能优化方法 正则表达式是一种强大的文本匹配工具,但是在处理大量数据时,正则表达式的性能可能会成为瓶颈。本文将介绍一些正则表达式性能优化方法,帮助你编写高效的正则表达式。 1. 避免使用贪婪匹配 贪婪匹配是指正则表达式尽可能多地匹配字符。例如,正则表达式.*将匹配任何字符,直到遇到换行符为止。这种匹配方式可能会导致性能问题,因为…

    python 2023年5月14日
    00
  • 如何使用Python在MySQL中使用主键?

    在MySQL中,主键是一种用于唯一标识表中每一行的特殊列。在Python中,可以使用MySQL连接来执行主键查询。以下是在Python中使用主键的完整攻略,包括主键的基本语法、使用主键的示例以及如何在Python中使用主键。 主键的基本语法 MySQL中,可以使用PRIMARY KEY关键字来指定主键列。以下创建主键列的基本法: TABLE table_na…

    python 2023年5月12日
    00
  • 利用python获得时间的实例说明

    我可以为你提供一些有关利用Python获得时间的实例说明的攻略。 Markdown 标题 利用Python获得时间 如果你想在Python中获取时间数据,你可以使用Python标准库中的time模块和datetime模块。 示例 1:获得当前时间 要获取当前的本地时间,你可以使用下面的代码: import time local_time = time.loc…

    python 2023年6月2日
    00
  • Python面向对象编程(一)

    关于“Python面向对象编程(一)”,以下是完整攻略: 1. 面向对象编程简介 面向对象编程( Object Oriented Programming, OOP)是一种程序设计的方法,它将程序中的对象作为程序的基本单元,通过封装、继承和多态等机制,实现代码的可复用、可维护和可扩展。在 Python 中,一切皆为对象,因此 Python 是一门完美的面向对象…

    python 2023年5月13日
    00
  • Python脚本后台运行的几种方式

    下面我就来详细讲解一下Python脚本后台运行的几种方式。 1. 使用nohup命令 nohup命令可以在后台运行一个命令,并将其输出重定向到nohup.out文件中。可以使用以下命令将Python脚本后台运行: nohup python3 myscript.py > nohup.out 2>&1 & 其中,myscript.py…

    python 2023年5月19日
    00
  • python3获取url文件大小示例代码

    如何用Python3获取URL文件大小?下面是一些示例代码和技巧帮助您获得准确的文件大小。 示例代码 1. 使用urllib库 import urllib.request def get_file_size(url): headers = urllib.request.urlopen(url).headers if "Content-Length&…

    python 2023年6月3日
    00
  • python 列表常用方法超详细梳理总结

    以下是详细讲解“Python列表常用方法超详细梳理总结”的完整攻略。 Python列表常用方法 在Python中,列表是一种常见的数据类型,它可以存储任意类型的数据,包括数字、字符串、列表、元组、字典等。下面是Python列表常用方法的详细说明。 创建列表 在Python中,可以使用方括号[]或list()函数来创建一个列表。下面是一个示例,演示了如何创建一…

    python 2023年5月13日
    00
  • 如何利用Python识别图片中的文字详解

    如何利用Python识别图片中的文字 在Python中,可以使用Tesseract-OCR和OpenCV库实现图片中文字的识别。 安装Tesseract-OCR Tesseract-OCR是一个开源的OCR引擎,可以识别多种语言文字。对于Windows用户,可以从Tesseract-OCR官网下载exe文件进行安装。对于Linux用户,可以使用以下命令进行安…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部