Skip to main content
 首页 » 编程设计

Python openpyxl 读取到空单元格

2025年05月04日14mate10pro

我试图从我的 Excel 文件中读取一列,直到它遇到一个空单元格,然后它需要停止读取。 到目前为止我的代码:

import openpyxl 
import os 
 
def main(): 
    filepath = os.getcwd() + "\test.xlsx" 
 
    wb = openpyxl.load_workbook(filename=filepath, read_only=True) 
    ws = wb['Tab2'] 
 
    for i in range(2, 1000): 
        cellValue = ws.cell(row=i, column=1).Value 
        if cellValue != None: 
            print(str(i) + " - " + str(cellValue)) 
        else: 
            break; 
 
if __name__ == "__main__": 
    main()  

通过运行它,当它遇到一个空单元格时,我会收到以下错误。有谁知道我怎样才能防止这种情况发生。

Traceback (most recent call last): 
  File "testFile.py" in <module> 
      main() 
      cellValue = sheet.cell(row=i, column=1).value 
  File "C:\Python34\lib\openpyxl\worksheet\worksheet.py", line 353, in cell 
      cell = self._get_cell(row, column) 
  File "C:\Python34\lib\openpyxl\worksheet\read_only.py", line 171, in _get_cell 
      cell = tuple(self.get_squared_range(column, row, column, row))[0] 
IndexError: tuple index out of range 

请您参考如下方法:

尝试使用 max_row 获得最大行数。

from openpyxl import Workbook 
from openpyxl import load_workbook 
 
wb = load_workbook('exc_file.xlsx') 
ws1 = wb['Sheet1'] 
for row in range(1,ws1.max_row): 
    if(ws1.cell(row,1).value is not None): 
            print(ws1.cell(row,1).value) 

或者如果您想在它达到空值时停止阅读,您可以简单地:

from openpyxl import Workbook 
from openpyxl import load_workbook 
 
wb = load_workbook('exc_file.xlsx') 
ws1 = wb['Sheet1'] 
for row in range(1,ws1.max_row): 
    if(ws1.cell(row,1).value is None): 
        break 
    print(ws1.cell(row,1).value)