如何在Python的openpyxl中获取特定列的所有行值?
在实际工作中,我们经常需要读取Excel表格中的数据,而openpyxl是一种操作Excel文件的Python模块,可以方便地对表格进行读写操作。本文将介绍如何在openpyxl中获取特定列的所有行值的方法。
准备工作
为了演示本文方法,我们需要准备一个包含数据的Excel表格。可以使用openpyxl模块中的Workbook、Worksheet等类进行表格的创建、读取和操作。以下是生成一个包含数据的Excel表格的示例代码:
from openpyxl import Workbook
# 创建Workbook对象
workbook = Workbook()
# 创建Worksheet对象
worksheet = workbook.active
# 向表格中添加数据
worksheet['A1'] = '姓名'
worksheet['B1'] = '年龄'
worksheet['C1'] = '性别'
worksheet['A2'] = '张三'
worksheet['B2'] = 20
worksheet['C2'] = '男'
worksheet['A3'] = '李四'
worksheet['B3'] = 30
worksheet['C3'] = '女'
worksheet['A4'] = '王五'
worksheet['B4'] = 25
worksheet['C4'] = '男'
# 保存表格
workbook.save('test.xlsx')
运行上述代码后,会在当前文件夹中生成一个名为“test.xlsx”的Excel表格,包含四行数据,分别为姓名、年龄和性别。
获取特定列的所有行值
在openpyxl中,获取特定列的所有行值有多种方法。下面将介绍其中两种典型方法:通过列名和列号进行获取。
通过列名获取
要通过列名获取特定列的所有行值,可以使用Worksheet类中的“iter_rows()”方法,该方法可以遍历所有行数据。示例代码如下:
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('test.xlsx')
# 获取第1个工作表
worksheet = workbook.worksheets[0]
# 获取姓名这一列的数据
column_name = 'A'
column_data = []
for row in worksheet.iter_rows(min_row=2, max_col=1, max_row=worksheet.max_row):
cell_value = row[0].value
column_data.append(cell_value)
# 打印结果
print(column_data)
运行上述代码后,会输出包含所有姓名数据的列表,结果如下:
['张三', '李四', '王五']
在上述代码中,首先通过“load_workbook()”方法加载文件“test.xlsx”,然后通过下标获取第1个工作表。接下来,设置遍历行数据的起点范围,即从第2行开始到最后一行,同时设置遍历的列范围为“A列”。在遍历过程中,通过访问cells属性获取当前单元格的值,将其添加到列表“column_data”中。最后,通过打印“column_data”输出结果。
通过列号获取
要通过列号获取特定列的所有行值,可以使用Worksheet类中的“iter_cols()”方法,该方法可以遍历所有列数据。示例代码如下:
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('test.xlsx')
# 获取第1个工作表
worksheet = workbook.worksheets[0]
# 获取姓名这一列的数据
column_index = 1
column_data = []
for column in worksheet.iter_cols(min_row=2, max_col=1, max_row=worksheet.max_row):
if column[0].column == column_index:
for cell in column:
cell_value = cell.value
column_data.append(cell_value)
# 打印结果
print(column_data)
运行上述代码后,会输出包含所有姓名数据的列表,结果与之前的方法相同。
在上述代码中,首先通过“load_workbook()”方法加载文件“test.xlsx”,然后通过下标获取第1个工作表。与之前的方法不同的是,这里设置遍历列数据的起点范围,即从第2行开始到最后一行,同时设置遍历的行范围为“A列”。在遍历过程中,通过判断当前列的列号是否与目标列号相同,如果相同则遍历该列所有单元格,并将其值依次添加到列表“column_data”中。最终,通过打印“column_data”输出结果。
结论
通过以上两种不同的方式,我们可以在openpyxl中轻松获取特定列的所有行值。在实际应用中,要根据不同的需求选择合适的方法来实现数据的读取操作。同时,在使用openpyxl时,还需要注意其版本和文档的更新情况,以及一些常见的错误和异常处理。