下面是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,分别为Chinese
和Math
,每行内容表示一个学生的姓名、学号和成绩。Chinese
和Math
中的学生可能有重复。请下载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
文件,并读取其Chinese
和Math
两个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,分别为Sheet1
、Sheet2
和Sheet3
,每个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技术站