Solución:
Puede ser para alguien el próximo código será útil:
index_row = []
# loop each row in column A
for i in range(1, ws.max_row):
# define emptiness of cell
if ws.cell(i, 1).value is None:
# collect indexes of rows
index_row.append(i)
# loop each index value
for row_del in range(len(index_row)):
ws.delete_rows(idx=index_row[row_del], amount=1)
# exclude offset of rows through each iteration
index_row = list(map(lambda k: k - 1, index_row))
Actualización de 2018: estaba buscando cómo eliminar una fila hoy y descubrí que la funcionalidad se agrega en openpyxl 2.5.0-b2. Lo intenté y funcionó perfectamente. Aquí está el enlace donde encontré la respuesta: https://bitbucket.org/openpyxl/openpyxl/issues/964/delete_rows-does-not-work-on-deleting
Y aquí está la sintaxis para eliminar una fila:
ws.delete_rows(index, 1)
donde: ‘ws’ es la hoja de trabajo, ‘índice’ es el número de fila y ‘1’ es el número de filas a eliminar.
También existe la posibilidad de eliminar columnas, pero no lo he probado.
Hasta donde yo sé, openpyxl no proporciona ninguna forma de eliminar filas. Puede usar COM en su lugar, por ejemplo:
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()
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)