[英]Search a cell for a string in Excel sheet using openpyxl
我需要刪除 Excel 電子表格中有一些不必要的行。 Excel 工作表總是在我希望使用 openpyxl 刪除的報告末尾生成行。 一個示例單元格是Report Generated By: NAME
我已經嘗試過了,但收到了“TypeError:'NoneType' 類型的參數不可迭代”錯誤。 這是我的代碼:
import openpyxl as xl
import os
filename = "1615449726873.xlsx"
wb = xl.load_workbook(filename)
sheet = wb[os.path.splitext(filename)[0]]
for row in range(2, sheet.max_row +1):
if 'Report Generated By :' in sheet.cell(row, 1).value:
sheet.delete_rows(row, 1)
wb.save("testing.xlsx")
我已經成功地刪除了帶有 == 字符串的單元格(見下文),但是,工作表也有具有動態內容的單元格,所以我需要 CONTAINS 而不是 EQUAL TO 才能正常工作。 此代碼有效:
for row in range(2, sheet.max_row +1):
if sheet.cell(row, 1).value is == 'Report Generated On:':
sheet.delete_rows(row, 1)
有人可以解釋為什么第二個示例有效,但第一個示例無效嗎?
我認為問題在於空單元格正在返回 NoneType。 您可以解決我將單元格值轉換為這樣的字符串的問題
for row in range(2, sheet.max_row +1):
if 'Report Generated By :' in str(sheet.cell(row, 1).value):
sheet.delete_rows(row, 1)
wb.save("testing.xlsx")
問題是您假設所有單元格都有值字符串,但它們可能是數字、日期時間或無。
此外,當從工作表頂部刪除行時,您的計數器將變得不准確,最好從底部執行此操作。
for idx in range(sheet.max_row, 0, -1):
cell = ws.cell(idx, 1)
if cell.value and "Report Generated By :" in cell.value:
sheet.delete_rows(idx)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.