在花了最后几个小时试图找到一种方法之后,我决定问一下。
我已经多次阅读了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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句