以类似于 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_col
和 max_col
并将两者都设置为 1 将搜索绑定到仅第一列。最小行现在是第 2 行,这意味着我们跳过 header 并搜索所有一直往下第 1 列,直到 return 什么都没有。
免责声明,很遗憾我不能使用 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_col
和 max_col
并将两者都设置为 1 将搜索绑定到仅第一列。最小行现在是第 2 行,这意味着我们跳过 header 并搜索所有一直往下第 1 列,直到 return 什么都没有。