删除空行 – openpyxl

花了最后几个小时试图find一个方法来做到这一点,我决定只是问。

我已经经历了几次以上的openpyxl文档 ,以及通过这里和这里所提的问题,甚至从这个在线书籍的章节,没有一个真正回答我正在尝试做什么。

这里是我现在的代码:

for row in ws.iter_rows(): i = 1 if row[i].internal_value() == None: ws.Rows(i).Delete() else: i + 1 

我已经尝试了很多不同的东西,现在我得到一个错误:

TypeError:'NoneType'对象不可调用

我在做什么错了,我该如何解决这个问题,以便遍历所有的行,并删除任何完全空的,或者(如果它更容易实现)有一个空的第一个单元格?

谢谢

据我所知openpyxl没有办法删除行。 你可以使用COM代替,例如:

 import win32com.client filename = 'c:/my_file.xlsx' sheetname = 'Sheet1' xl = win32com.client.DispatchEx('Excel.Application') wb = xl.Workbooks.Open(Filename=filename) ws = wb.Sheets(sheetname) begrow = 1 endrow = ws.UsedRange.Rows.Count for row in range(begrow,endrow+1): # just an example if ws.Range('A{}'.format(row)).Value is None: ws.Range('A{}'.format(row)).EntireRow.Delete(Shift=-4162) # shift up wb.Save() wb.Close() xl.Quit() 

有很多原因,为什么openpyxl不提供这种可能性,但你可能能够基于这个片段工作: https : //bitbucket.org/snippets/openpyxl/qyzKn

否则,请查看xlwings远程控制Excel,而不必混淆COM。