使用openpyxl处理Excel表格:将一列转换为列表

5

我正在处理一个庞大的Excel文件。

我正在使用

wb = load_workbook(filename='my_file.xlsx')
ws = wb['Sheet1']

我不想以任何方式更改工作表。我只想从几列中取数据并处理它们。 我的理解是,我不能仅仅调用一列并使用.tolist(),因为所有的值都存储在Excel中。


ws.columns 会返回一个元组的元组,所以你实际上不需要一个列表。 - mechanical_meat
那只是以 <Cell Sheet1.A1> 的形式给我的列,等等。但是我如何从 A 列中获取值信息,将它们放入列表并进行操作?ws['A1'].value 给出了我正在寻找的信息。我想唯一的方法是使用 for 循环遍历列中的所有行,并将它们附加到列表中。 - AK9309
2个回答

12

我认为Bernie的回答是针对一个稍旧版本的OpenPyxl。 Worksheet.columns不再返回元组,而是一个生成器。访问列的新方法是Worksheet['AlphabetLetter']

所以重写后的代码是:

mylist = []
for col in ws['A']:
     mylist.append(col.value)

mylist = [c.value for c in ws['A']] - Joe

3

根据你的评论,这里有一件你可以做的事情:

mylist = []
for col in ws.iter_cols():
    mylist.append(col.value)

编辑:由于API更改。


这正是我正在寻找的。谢谢! - AK9309
目前这个不起作用,因为ws.columns是一个生成器。应该像这样: for col in ws.columns.next(): - Corvax
我遇到了这个错误:TypeError: 'generator' object is not subscriptable。 - martinmistere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接