我们如何在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') ...