Python Office Automation - uso básico de openpyxl!

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)

Snipaste_2020-09-13_10-08-11.jpg

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.activepara 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.tabColorparâmetros, pode-se notar aqui que apenas recebeu RRGGBBcódigo de cores;

Para quem não sabe qual é a cor de fundo da aba da folha, consulte a figura abaixo;

Snipaste_2020-09-13_10-30-07.jpg

5. Retorne os nomes de todas as planilhas na pasta de trabalho

Por Workbook.sheetnamecomando 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-onlymodo 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.valuespropriedade, 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 = Truepara 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!

Acho que você gosta

Origin blog.csdn.net/weixin_42512684/article/details/108915152
Recomendado
Clasificación