Como deletar uma ou mais linhas no excel usando Openpyxl?
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'
]
(
"Maximum rows before removing:"
, sheet.max_row)
for
row
in
sheet:
remove(sheet,row)
(
"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'
]
(
"Maximum rows before removing:"
, sheet.max_row)
for
row
in
sheet:
remove(sheet)
(
"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'
]
(
"Maximum rows before removing:"
, sheet.max_row)
delete(sheet)
(
"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'
]
(
"Maximum rows before removing:"
, sheet.max_row)
sheet.delete_rows(
2
, sheet.max_row
-
1
)
(
"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:
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva