Introdução ao openpyxl
openpyxl é uma biblioteca integrada de Python que pode ser usada diretamente para ler e gravar arquivos xlsx, xlsm, xltx e xltm. Com ela, você pode usar a sintaxe Python para automatizar operações em lote em arquivos xlsx locais
Deixe-me falar sobre a parte da instalação primeiro. Se você usa o Anaconda como seu ambiente Python, openpyxl pode ser usado diretamente sem instalação; se você precisar instalá-lo, o método também é muito simples.
pip install openpyxl
atributos de arquivo xlsx
Antes de processar a tabela do Excel, você precisa entender a explicação e a estrutura de vários termos no arquivo xlsx
1. O que significa a pasta de trabalho?
A pasta de trabalho é chamada de pasta de trabalho, que pode se referir a um arquivo xlsx;
2. A que folha, célula, linha e coluna se referem, respectivamente?
Em relação à pergunta 2, consulte a figura abaixo (ver nota)
Operação básica do comando Openpyxl
1. Crie uma pasta de trabalho vazia
from openpypl import Wrokbook
from openpyxl.utils import get_column_letter
wb = Workbook()
ws1 = wb.active
Uma pasta de trabalho padrão contendo pelo menos uma planilha, o comando Workbook.active
para obter a primeira planilha atual (ou seja, uma primeira planilha);
2. Crie uma nova planilha
ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
# or
ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position
Ao create_sheet()
criar um novo comando de planilha, padrão create_sheet, há dois parâmetros nome, índice;
- nome, define o nome da folha;
- índice, para definir a posição de inserção da folha, o padrão é Nenhum, ou seja, a folha recém-criada é inserida no final; 0 representa a posição para inserir a primeira folha;
3. Altere o nome da folha
Uma linha de código
ws.title = 'New Title'
4. Altere a cor de fundo da guia na folha
ws.sheet_properties.tabColor = "1072BA"
Ao modificar os Wroksheet.sheet_properties.tabColor
parâmetros, pode-se notar aqui que apenas recebeu RRGGBB
código de cores;
Para quem não sabe qual é a cor de fundo da aba da folha, consulte a figura abaixo;
5. Retorne os nomes de todas as planilhas na pasta de trabalho
Por Workbook.sheetname
comando para ver
>>> print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']
# 或者用迭代方法
>>> for sheet in wb:
... print(sheet.title)
6. Copie as planilhas existentes para a pasta de trabalho recém-criada
Pode Workbook.copy_worksheet()
funcionar método
# 将 source 中的worksheet复制到 target 中去
source = wb.active
target = wb.copy_worksheet(source)
Deve-se observar que quando a pasta de trabalho está no modo somente leitura ou somente gravação, ela não pode ser copiada; além disso, apenas células (valores, estilos, hiperlinks, comentários) e atributos específicos da planilha (dimensões, formatos, atributos) podem ser copiado e outras propriedades de pastas de trabalho / planilhas não podem ser copiadas (gráficos de imagens etc.)
7. Obtenha os dados de uma célula
Depois de criar com sucesso a pasta de trabalho e a planilha, você pode modificar a célula (o conteúdo da célula, células podem ser obtidas por meio de palavras-chave exclusivas na planilha
>>> c = ws['A4'] # 获取第4行列名为A 单元格中的值
Modifique-o por meio de comandos de atribuição
ws['A4'] = 4
openpyxl tem uma função Worksheet.cell()
para modificar os dados na célula, pode ser direcionado para linhas específicas, alterações específicas de colunas,
d = ws.cell(row = 4,columns = 2,value = 10)
- linha representa a linha especificada
- colunas indica a coluna especificada
- valor indica o valor dos dados a serem substituídos na célula; quando este parâmetro não é definido, significa que apenas o espaço de memória é criado para a célula e nenhum valor é atribuído
Por exemplo
>>> for x in range(1,101):
... for y in range(1,101):
... ws.cell(row=x, column=y)
8. Obtenha várias células
8.1, openpyxl também pode realizar operações de fatiamento para obter várias células
>>> cell_range = ws['A1':'C2']
8.2, o método de obtenção de dados de várias linhas e colunas na planilha é semelhante
>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]
8.3, Worksheet.iter_row()
para obter o intervalo de linhas e colunas na planilha e, em seguida, use a iteração de loop para obter os dados de cada célula
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
... for cell in row:
... print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>
8.4, a Worksheet.iter_cols()
mesma função também pode ser alcançada
>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
... for cell in col:
... print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.A2>
<Cell Sheet1.B1>
<Cell Sheet1.B2>
<Cell Sheet1.C1>
<Cell Sheet1.C2>
Observe que no read-only
modo de hora , Worksheet,iter_cols()
o método não pode ser usado
9, veja apenas o valor na célula
9.1, quando apenas visualizar a planilha em valor, por Worksheet.values
propriedade, que irá iterar todas as linhas da planilha, mas retorna apenas os valores das células
for row in ws.values:
for value in row:
print(value)
9.2, até Worksheet.iter_rows()
, e Worksheet.iter_cols()
pode ser alcançado adicionando um parâmetro na função values_only = True
para retornar o valor da célula
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
... print(row)
(None, None, None)
(None, None, None)
10. Ler e gravar operações de arquivo
10. Carregamento de arquivo Excel
openpyxl.load_workbook()
Função para abrir um arquivo xlsx armazenado localmente
>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
>>> print wb2.sheetnames
['Sheet2', 'New Title', 'Sheet1']
10.2, armazenamento de arquivos excel
Depois que a pasta de trabalho for modificada e criada com êxito, ela Workbook.save(path)
pode ser salva no disco local por meio do comando
>>> wb = Workbook()
>>> wb.save('balances.xlsx')
Ok, o acima é todo o conteúdo deste artigo, e obrigado a todos pela leitura!