我们如何在Python openpyxl包中使用iter_rows()?

我在Python(Canopy)使用openpyxl包来使用excel文件。 我们在这个链接中有这个教程: LINK

 you can also use the openpyxl.worksheet.Worksheet.iter_rows() method: >>> tuple(ws.iter_rows('A1:C2')) ((<Cell Sheet1.A1>, <Cell Sheet1.B1>, <Cell Sheet1.C1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>, <Cell Sheet1.C2>)) >>> for row in ws.iter_rows('A1:C2'): ... for cell in row: ... print cell <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2> 

我们如何在Python中导入openpyxl.worksheet.Worksheet.iter_rows()方法? 我用这个代码:

 import openpyxl as op ms = op.load_workbook('mtest.xlsx') ws = ms.active op.worksheet.Worksheet.iter_rows() 

此代码返回:

 type object 'Worksheet' has no attribute 'iter_rows' 

问题是什么?

如教程所示,您需要在工作表的实例上调用iter_rows方法,例如:

 >>> for row in ws.iter_rows('A1:C2'): ... for cell in row: ... print cell 

要么

 >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): ... for cell in row: ... print(cell) <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2> 

正如你的错误信息所述,你在Worksheet types上调用它,这将不起作用。 它需要在一个对象调用

 op.worksheet.Worksheet.iter_rows() # wrong 

在另一个答案中看另一个例子 。

对于旧版本的openpyxl,您可能需要确保在加载工作簿时启用迭代器 – 请参阅此主题 。 对于更新的版本,这不是必需的。

下面是我刚刚在Python REPL(使用openpyxl 1.8.3)中testing的完整示例:

 >>> import openpyxl as op >>> wb = op.load_workbook('/tmp/test.xlsx', use_iterators=True) >>> ws = wb.active >>> for row in ws.iter_rows(): ... for cell in row: ... print cell ... RawCell(row=1, column='A', coordinate='A1', internal_value=1.0, data_type='n', style_id='0', number_format='general') RawCell(row=1, column='B', coordinate='B1', internal_value=10.0, data_type='n', style_id='0', number_format='general') ... 
Interesting Posts