我编写了一些代码来生成使用OpenPyXL库迭代列的.xlsx文件中的元组。
from openpyxl import workbook
wb = load_workbook('....\example.xlsx')
ws = wb.get_sheet_by_name('SomeMatrix')
c = tuple(ws.columns)
print c
返回
((<Cell u'SomeMatrix'.A1>, <Cell u'SomeMatrix'.B1>, ..., <Cell u'SomeMatrix'.CY1>),...
,(<Cell u'SomeMatrix'.A400>, <Cell u'SomeMatrix'.B400>, <Cell u'SomeMatrix'.CY400>))
我想从这些多列中提取值(例如,通过使用cell.value),这样我就可以获得一个名为c的元组元组,它应该如下所示:
c= ((1,2,...,1234),(3,5,...,9328),...,(2,1,...,4321))
答案 0 :(得分:1)
对于任何有类似问题的人来说,我最终是如何完成的。 请注意,我不熟悉Python编码,所以我不能保证这是一个有效的解决方案。如果我的任何陈述错误,请纠正我。此外,随时发布更短和/或更有效的解决方案。
使用iter_cols()函数返回一个生成器,该生成器快速进行单次迭代,因为它在访问之前不会将数据加载到内存中。相反,它可以即时访问所有内容。
我的代码现在看起来像这样:
from openpyxl import workbook
wb = load_workbook('Path\to\Matrix.xlsx')
ws = wb.get_sheet_by_name('SomeMatrix')
def iter_cols(ws): #define your own iter_cols function which yields the cell values via for loop
for col in ws.iter_cols():
yield tuple(cell.value for cell in col) #the yield statement returns a generator
c = tuple(iter_cols(ws))