Python利用openpyxl库遍历Sheet的实例

下面是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日

相关文章

  • 深入解析Python小白学习【操作列表】

    深入解析Python小白学习【操作列表】攻略 列表是Python中常用的数据类型之一,可以用来存储多个元素。本文将深入解Python小白学习【操作列表】的完整攻略,包括列表的定义、访问元素、切片、添加、删除、修改等操作。 列表的定义 列表是一种有序的可变序列可以存储任意类型的元素。列表的定义方式如下: lst = [element1, element2, .…

    python 2023年5月13日
    00
  • React中事件的类型定义方式

    React中事件的类型定义方式如下: 在React中,事件类型是通过合成事件(SyntheticEvent)来定义的,并统一放在React.MouseEvent和React.KeyboardEvent中。 React.MouseEvent用于所有鼠标相关的事件类型,如:onClick、onMouseDown、onMouseUp、onMouseMove等。 R…

    python 2023年6月13日
    00
  • python使用scrapy发送post请求的坑

    Python使用Scrapy发送POST请求的坑 在使用Scrapy发送POST请求时,可能会遇到一些坑。以下是两个示例,介绍了如何使用Scrapy发送POST请求以及可能遇到的问题。 示例一:使用Scrapy发送POST请求 以下是一个示例,可以使用Scrapy发送POST请求: import scrapy class MySpider(scrapy.Sp…

    python 2023年5月15日
    00
  • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)

    “浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)”是一篇关于使用Python和Selenium进行自动化测试的教程,包含一个完整的示例,介绍了如何使用Python编写自动化测试脚本,通过Selenium驱动浏览器模拟用户操作,从而测试网页的功能和性能。 该篇文章的攻略分为以下几个部分: 环境配置 在使用Python和Seleni…

    python 2023年6月5日
    00
  • python sitk.show()与imageJ结合使用常见的问题

    当使用Python的SimpleITK库的sitk.Show()函数显示图像,并与ImageJ结合使用时,可能会遇到一些常见的问题。以下是一些具体的攻略: 1. 问题描述 在调用sitk.Show()函数并与ImageJ结合使用时,图像可以成功在ImageJ中打开和显示,但ImageJ中的图像颜色有误,或缩放与旋转出现问题。 2. 原因分析 这是由于Imag…

    python 2023年5月20日
    00
  • python中sys模块是做什么用的

    Python中的sys 模块提供了访问与Python解释器关联的变量和函数的一组属性。该模块包含系统特定的参数和功能,例如访问命令行参数和标准输入输出。下面是关于sys模块的一些常用方法和示例说明: sys.argv 该属性存储从命令行接收到的命令行参数。在使用命令行界面运行Python文件时,可以在命令行中添加参数,用空格分隔。下面是一个示例: impor…

    python 2023年5月30日
    00
  • 一篇文章告诉你如何用Python控制Excel实现自动化办公

    下面是详细讲解如何用Python控制Excel实现自动化办公的完整实例教程。 一、准备工作 在执行示例代码之前,需要安装一些必要的第三方库,包括: pandas openpyxl 在安装完这两个库之后,就可以开始编写代码了。 二、读取Excel文件 通过Python库 openpyxl,我们可以轻松地读取Excel文件。下面是示例代码: import ope…

    python 2023年5月13日
    00
  • Blender Python编程快速入门教程

    首先要明确的是Blender是一款专业的3D建模软件,Python是其内置的一种脚本语言,可以通过编写Python脚本来批量处理模型操作、自动生成场景等。因此,学习Blender Python编程需要确保自己具备一定的3D建模基础和Python编程基础。 以下是Blender Python编程快速入门教程的完整攻略: 一、安装Blender和Python环境…

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