擅长:python、mysql、java
<p>删除循环中的行可能很慢,因为openpyxl必须更新被删除行下面的所有单元格。因此,您应该尽可能少地这样做。一种方法是收集行号列表,检查连续组,然后使用此列表从底部删除</p>
<p>更好的方法可能是通过<code>ws.values</code>循环并写入一个新的工作表,过滤掉相关的行。复制任何其他相关数据,如格式等。然后可以删除原始工作表并重命名新工作表</p>
<pre><code>ws1 = wb['My Sheet']
ws2 = wb.create_sheet('My Sheet New')
for row in ws1.values:
if row[x] == "ordered": # we can assume this is always the same column
continue
ws2.append(row)
del wb["My Sheet"]
ws2.title = "My Sheet"
</code></pre>
<p>对于更复杂的过滤,您可能希望将值加载到数据帧中,进行更改,然后写入新的工作表</p>