我正在使用xlrd通過目錄結構嗅探並提取電子表格,將第二行(第1行)讀到「執行任務」。問題是我不知道如何在第一個空行停止閱讀/打印。我知道行不是「空」對象,但我希望有一點幫助,說明如何檢查所有單元格是否爲空。這裏是我正在使用的代碼:如何在第一個空行停止使用xlrd讀取電子表格?
import xlrd
import os
def excel_file_filter(filename, extensions=['.xls', '.xlsx']):
return any(filename.endswith(e) for e in extensions)
def get_filenames(root):
filename_list = []
for path, subdirs, files in os.walk(root):
for filename in filter(excel_file_filter, files):
filename_list.append(os.path.join(path, filename))
return filename_list
spreadsheets = get_filenames('C:\\Temp')
for s in spreadsheets:
with xlrd.open_workbook(s) as wb:
cs = wb.sheet_by_index(0)
num_cols = cs.ncols
for row_index in range(1, cs.nrows):
print('Row: {}'.format(row_index))
for col_index in range(0, num_cols):
cell_object = cs.cell(row_index, col_index)
if cell_obj is not xlrd.empty_cell:
print('Col #: {} | Value: {}'.format(col_index, cell_obj))
什麼最終發生的是,它打印一路走過近1000行,當只有先說,25排在他們的內容。不同的電子表格之間的內容數量是不同的,所以一個通用的解決方案(不依賴於其他可選庫)可以幫助我理解如何檢測空行然後中斷。
檢查這些問題,他們可能會有所幫助:[如何檢測一個單元格是否爲空...](http://stackoverflow.com/questions/11603009/how-to-detect-if-a-cell-is-empty-when-reading-excel-files -using-the-xlrd-library)和[使用XLRD驗證單元格值](http://stackoverflow.com/questions/29907072/validating-a-cell-value-using-xlrd)。如果這些都不能解決您的問題,我很樂意提供幫助。 – 2017-03-18 16:57:47
@Mimx對不起,我應該提到我先檢查了那些。我確實理解了一些一般理論,但是所有嵌套循環都可以歸結爲單元格值,我很快就對xlrd感到非常不滿。我將不勝感激這種情況下的一些示範性幫助:) – auslander