我是python新手。最近我尝试在Windows7中使用openpyxl处理excel文件。我试图在excel文件中打印每个单元格的值'示例.xlsx'. 这是我的代码:
import openpyxl
workbook = openpyxl.load_workbook('Sample.xlsx')
worksheet = workbook.active
for row in worksheet.rows:
for col in worksheet.columns:
cell = worksheet.cell(row = row, column = col)
print(cell.value)
运行脚本时出现以下错误:
Traceback (most recent call last): File "excel.py", line 6, in cell = worksheet.cell(row = row, column = col) File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 306, in cell if row < 1 or column < 1: TypeError: unorderable types: tuple() < int()
我不能理解这个错误。有谁请解释一下我做错了什么。在
尝试将}替换为
worksheet.rows
替换为worksheet.iter_rows(min_row, max_row)
,并将{worksheet.iter_cols(min_col, max_col)
,其中min和maxes是循环范围。我认为worksheet.rows
给出了一个元组,你不能将它用于for
循环。iter_rows()
和iter_cols()
返回生成器,因此它应该可以工作。在worksheet.cell
的row
和column
参数需要基于1的索引,但是您同时传递一个元组(worksheet.rows
和{你几乎没有选择:
利用
workbook.rows
逐行迭代工作表并为每行返回一个单元格元组这一事实。这也为您节省了对worksheet.cell
的调用:相同,但按列:
使用
max_row
和max_column
获取此工作表中使用的最大行和列的索引(基于1),然后使用range
对它们进行迭代(同时记住,默认情况下range
是从零开始且互斥的:使用
worksheet.get_cell_collection
获得一个包含所有使用单元格的iterable,省去了显式调用worksheet.cell
的需要。这种方法的问题是返回的iterable的顺序是任意的:
我尝试过各种方法在excel表格中打印单元格的值。下面是我尝试过的代码:
相关问题 更多 >
编程相关推荐