以类似于 pandas 的方式使用 openpyxl 读取 excel 列

Reading excel columns with openpyxl in a similar way like in pandas

免责声明,很遗憾我不能使用 pandas 模块。

我需要能够读取 xls 和 xlsx 文件。

更具体地说,我目前的要求是:

1.Being 能够简单地读取每个 table 的列名称。
2.Get 列表中的所有列值按包含值列表的列名排列。

pandas中,它是如此简单
1 示例:

import pandas as pd

df = pd.read_excel('test.xls')
df.columns.values.tolist()

2 示例:

import pandas as pd

df = pd.read_excel('test.xls')
df[col_name].values

请告知我如何使用 openpyxl 实现相同的效果,如果不可能,可以使用类似于 pandas.

的其他包

这将产生预期的结果。

import openpyxl

wb = openpyxl.load_workbook(path)
ws = wb[SheetName]

问题 1):

[cell.value for cell in row if cell.value 
for row in ws.iter_rows(min_col=1, max_row=1)]

['foo',
'buzz',
'fizz']

这是如何运作的。我们指定它开始查看的列是第 1 列,由 min_col=1 指定。我们将它停止查看的行指定为第 1 行,由 max_row=1 指定。 if 语句检查单元格是否为空,它没有 return 该值,因为我们不知道列数。

问题 2)

[cell.value for cell in row if cell.value 
for row in ws.iter_rows(min_col=1, max_col=1, min_row=2)]

['this',
'is',
'a',
'test']

同样的逻辑也适用于此。我们通过使用 min_colmax_col 并将两者都设置为 1 将搜索绑定到仅第一列。最小行现在是第 2 行,这意味着我们跳过 header 并搜索所有一直往下第 1 列,直到 return 什么都没有。