遍历所有 rows/columns openpyxl 不再适用于新版本 >2.3.5
iterate through all rows/columns openpyxl not working anymore with new version >2.3.5
使用 2.3.5 版的 openpyxl 此代码有效:
from openpyxl import load_workbook
excel_file = load_workbook(excel_file_path,read_only=True)
sheet = excel_file["Sheet1"]
mylist = []
for row in sheet:
for cell in row:
mylist.append((cell.value, cell.row, cell.column))
我这样做是为了更快地处理我的大 excel 文件。但是从 2.4.x 开始的新版本不再有效,第一个 "for-loop" 立即中断,版本有什么变化?或者我如何使用最新版本的 openpyxl 做同样的事情?
这似乎只有在加载工作簿时将 read_only
参数设置为 True
时才会发生。
我的解决方法是使用 sheet
的 max_row
属性创建一个 range
值作为行索引循环:
from openpyxl import load_workbook
excel_file = load_workbook(excel_file_path,read_only=True)
sheet = excel_file["Sheet1"]
mylist = []
row_num = sheet.max_row
for row_index in range(1,row_num):
for cell in sheet[row_index]:
mylist.append((cell.value, cell.row, cell.column))
希望@CharlieClark 能对此有所启发。但与此同时,我希望这对您有所帮助。
使用 2.3.5 版的 openpyxl 此代码有效:
from openpyxl import load_workbook
excel_file = load_workbook(excel_file_path,read_only=True)
sheet = excel_file["Sheet1"]
mylist = []
for row in sheet:
for cell in row:
mylist.append((cell.value, cell.row, cell.column))
我这样做是为了更快地处理我的大 excel 文件。但是从 2.4.x 开始的新版本不再有效,第一个 "for-loop" 立即中断,版本有什么变化?或者我如何使用最新版本的 openpyxl 做同样的事情?
这似乎只有在加载工作簿时将 read_only
参数设置为 True
时才会发生。
我的解决方法是使用 sheet
的 max_row
属性创建一个 range
值作为行索引循环:
from openpyxl import load_workbook
excel_file = load_workbook(excel_file_path,read_only=True)
sheet = excel_file["Sheet1"]
mylist = []
row_num = sheet.max_row
for row_index in range(1,row_num):
for cell in sheet[row_index]:
mylist.append((cell.value, cell.row, cell.column))
希望@CharlieClark 能对此有所启发。但与此同时,我希望这对您有所帮助。