Openpyxl é uma biblioteca Python para manipular arquivos xlsx / xlsm / xltx / xltm. Com Openpyxl você pode criar um novo arquivo Excel ou uma planilha e também pode ser usado em um arquivo Excel existente ou planilha.

Instalação

Este módulo não vem embutido com Python. Para instalar este digite o comando abaixo no terminal.

pip3 install openpyxl

Neste artigo, discutiremos como excluir linhas em uma planilha do Excel com openpyxl. Você pode encontrar o arquivo Excel usado para este artigo aqui .

Excluindo linhas vazias (uma ou mais)

Método 1:



Este método remove linhas vazias, mas não continua linhas vazias, porque quando você exclui a primeira linha vazia, a próxima linha obtém sua posição. Portanto, não é validado. Portanto, esse problema pode ser resolvido por chamadas de função recursivas. 

Abordagem:

  • Importe a biblioteca openpyxl.
  • Carregue o arquivo Excel com openpyxl.
  • Em seguida, carregue a planilha do arquivo.
  • Repita as linhas da planilha carregada.
  • Passe a linha para remover a função.
  • Em seguida, verifique se cada célula está vazia se alguma das células não vazias retorna a função, portanto, apenas as linhas vazias sairão do loop for sem retornar.
  • Somente se todas as linhas estiverem vazias, a instrução remove é executada.
  • Finalmente, salve o arquivo no caminho.
import openpyxl 
  
  
def remove(sheet, row): 
    
    for cell in row: 
        
      if cell.value != None: 
              return
    
    
    sheet.delete_rows(row[0].row, 1) 
  
  
if __name__ == '__main__': 
  
    
    path = './delete_empty_rows.xlsx'
  
    
    book = openpyxl.load_workbook(path) 
  
    
    sheet = book['daily sales'] 
  
    print("Maximum rows before removing:", sheet.max_row) 
  
    
    for row in sheet: 
      remove(sheet,row) 
         
    print("Maximum rows after removing:",sheet.max_row) 
      
    
      path = './openpy.xlsx'
    book.save(path) 

Resultado:

Máximo de linhas antes de remover: 15
Máximo de linhas após a remoção: 14

Arquivo após exclusão:

O primeiro método excluiu apenas a primeira linha vazia e a segunda linha vazia contínua não é excluída.

Método 2:



Este método remove linhas vazias, incluindo linhas vazias contínuas usando a abordagem recursiva. O ponto principal é passar o objeto de pasta modificado como um argumento para a função recursiva. Se não houver nenhuma linha vazia, a função é retornada imediatamente.

Abordagem:

  • Importe a biblioteca openpyxl.
  • Carregue o arquivo Excel com openpyxl.
  • Em seguida, carregue a planilha do arquivo.
  • Passe a folha carregada para a função remover.
  • Repita as linhas com iter_rows().
  • Se qualquer uma das células em uma linha não estiver vazia, any() retorna falso, portanto, é retornado imediatamente.
  • Se todas as células em uma linha estiverem vazias, remova a linha com delete_rows().
  • Em seguida, passe o objeto de pasta modificado para a função remover, isso se repete até que o final da pasta seja alcançado.
  • Finalmente, salve o arquivo no caminho.
import openpyxl 
  
  
def remove(sheet): 
  
  for row in sheet.iter_rows(): 
  
    
    if not all(cell.value for cell in row): 
  
      
      sheet.delete_rows(row[0].row, 1) 
  
      
      remove(sheet) 
  
      return
  
  
if __name__ == '__main__': 
  
    
    path = './delete_empty_rows.xlsx'
  
    
    book = openpyxl.load_workbook(path) 
  
    
    sheet = book['daily sales'] 
  
    print("Maximum rows before removing:", sheet.max_row) 
  
    
    for row in sheet: 
      remove(sheet) 
         
    print("Maximum rows after removing:",sheet.max_row) 
  
      
    
      path = './openpy.xlsx'
    book.save(path) 

Resultado:

Máximo de linhas antes de remover: 15
Máximo de linhas após a remoção: 13

Arquivo após exclusão:

Este método excluiu ambas as linhas vazias contínuas conforme o esperado.

Excluindo todas as linhas

Método 1:

 Nesse método, excluímos a segunda linha repetidamente até que uma única linha seja deixada (nomes das colunas).

Abordagem:



  • Importe a biblioteca openpyxl.
  • Carregue o arquivo Excel e a planilha com a qual trabalhar.
  • Passe o objeto de pasta para excluir a função.
  • Exclua a segunda linha, até que haja uma única linha restante.
  • Finalmente, retorne a função.
import openpyxl 
  
  
def delete(sheet): 
  
    
    
    
    while(sheet.max_row > 1): 
      sheet.delete_rows(2) 
    
    return
  
  
if __name__ == '__main__': 
    path = './delete_every_rows.xlsx'
  
    
    book = openpyxl.load_workbook(path) 
  
    
    sheet = book['sheet1'] 
  
    print("Maximum rows before removing:", sheet.max_row) 
  
    delete(sheet) 
  
    print("Maximum rows after removing:", sheet.max_row) 
  
    
    path = './openpy.xlsx'
    book.save(path) 

Resultado:

Máximo de linhas antes de remover: 15
Máximo de linhas após a remoção: 1

Arquivo após exclusão:

Método 2:

Neste método, usamos o método de folha openpyxl para excluir linhas inteiras com um único comando.

Abordagem:

  • Importe a biblioteca openpyxl.
  • Carregue o arquivo Excel e a planilha com a qual trabalhar.
  • Use a função delete_rows para excluir todas as linhas, exceto os nomes das colunas.
  • Portanto, uma única linha vazia sobra.
import openpyxl 
  
if __name__ == '__main__': 
  
    
    path = './delete_every_rows.xlsx'
  
    
    book = openpyxl.load_workbook(path) 
  
    
    sheet = book['sheet1'] 
  
    print("Maximum rows before removing:", sheet.max_row) 
  
    
    
    
    
    
    sheet.delete_rows(2, sheet.max_row-1) 
  
    print("Maximum rows after removing:", sheet.max_row) 
  
    
    path = './openpy.xlsx'
    book.save(path) 

Resultado:

Máximo de linhas antes de remover: 15
Máximo de linhas após a remoção: 1

Arquivo após exclusão: