Python Office Automation: uso básico de openpyxl.

Introducción a openpyxl

openpyxl es una biblioteca incorporada de Python que se puede usar directamente para leer y escribir archivos xlsx, xlsm, xltx y xltm. Con él, puede usar la sintaxis de Python para automatizar operaciones por lotes en archivos xlsx locales

Permítanme hablar primero sobre la parte de instalación. Si usa Anaconda como su entorno Python, openpyxl se puede usar directamente sin instalación, si necesita instalarlo, el método también es muy simple.

pip install openpyxl

atributos de archivo xlsx

Antes de procesar la tabla de Excel, debe comprender la explicación y estructura de varios términos en el archivo xlsx

1. ¿Qué significa Workbook?

El libro de trabajo se llama libro de trabajo, que puede hacer referencia a un archivo xlsx;

2. ¿A qué se refieren respectivamente hoja, celda, fila y columna?

Con respecto a la pregunta 2, consulte la figura siguiente (ver nota)

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

Operación del comando básico de Openpyxl

1. Cree un libro de trabajo vacío
from openpypl import Wrokbook
from openpyxl.utils import get_column_letter

wb = Workbook()
ws1 = wb.active

Un libro de trabajo predeterminado que contiene al menos una hoja de trabajo, el comando Workbook.activepara obtener la primera hoja actual (es decir, una primera hoja);

2. Cree una nueva hoja de trabajo
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

Al create_sheet()crear un nuevo comando de hoja de trabajo, create_sheet default hay dos parámetros name, index;

  • nombre, define el nombre de la hoja;
  • índice, para establecer la posición para insertar la hoja, el valor predeterminado es Ninguno, es decir, la hoja recién creada se inserta al final; 0 representa la posición para insertar la primera hoja;
3. Cambiar el nombre de la hoja

Una línea de código

ws.title = 'New Title'
4. Cambie el color de fondo de la pestaña en la hoja.
ws.sheet_properties.tabColor = "1072BA"

Al modificar los Wroksheet.sheet_properties.tabColorparámetros se puede observar aquí que solo se recibió el RRGGBBcódigo de color;

Para aquellos que no saben cuál es el color de fondo de la pestaña de la hoja, consulte la figura siguiente;

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

5. Devuelva los nombres de todas las hojas del Libro de trabajo.

Por Workbook.sheetnamecomando para ver

>>> print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']

# 或者用迭代方法

>>> for sheet in wb:
...     print(sheet.title)
6. Copie las hojas de trabajo existentes en el libro de trabajo recién creado.

Puede Workbook.copy_worksheet()funcionar método

# 将 source 中的worksheet复制到 target 中去

source = wb.active
target = wb.copy_worksheet(source)

Cabe señalar que cuando el libro de trabajo está en modo de solo lectura o solo escritura, no se puede copiar; además, solo las celdas (valores, estilos, hipervínculos, comentarios) y los atributos específicos de la hoja de trabajo (dimensiones, formatos, atributos) pueden copiarse y no se pueden copiar otras propiedades de libros / hojas de trabajo (gráficos de imágenes, etc.)

7. Obtén los datos de una celda

Después de crear correctamente el libro y la hoja de trabajo, puede modificar la celda (el contenido de la celda, las celdas se pueden obtener a través de las palabras clave únicas en la hoja de trabajo

>>> c = ws['A4'] # 获取第4行列名为A 单元格中的值

Modificarlo mediante comandos de asignación

ws['A4'] = 4

openpyxl tiene una función Worksheet.cell()para modificar los datos en la celda, se puede apuntar a filas específicas, cambios específicos de columnas,

d = ws.cell(row = 4,columns = 2,value = 10)
  • fila representa la fila especificada
  • columnas indica la columna especificada
  • value indica el valor de los datos que se reemplazarán en la celda; cuando este parámetro no está configurado, significa que solo se crea el espacio de memoria para la celda y no se asigna ningún valor

P.ej

>>> for x in range(1,101):
...        for y in range(1,101):
...            ws.cell(row=x, column=y)
8. Obtenga varias celdas

8.1, openpyxl también puede realizar operaciones de corte para obtener múltiples celdas

>>> cell_range = ws['A1':'C2']

8.2, el método para obtener datos de varias filas y columnas en la hoja de trabajo es similar

>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]

8.3, Worksheet.iter_row()para obtener el rango de filas y columnas en la hoja, y luego use la iteración del ciclo para obtener los datos de cada celda

>>> 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, Worksheet.iter_cols()también se puede lograr la misma función

>>> 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>

Tenga en cuenta que en el read-onlymodo de hora , Worksheet,iter_cols()el método no se puede utilizar

9, solo vea el valor en la celda

9.1, cuando solo ve la hoja de trabajo en valor, por Worksheet.valuespropiedad, que iterará todas las filas en la hoja de trabajo, pero devuelve solo valores de celda

for row in ws.values:
   for value in row:
     print(value)

9.2, hasta Worksheet.iter_rows(), y Worksheet.iter_cols()se puede lograr agregando un parámetro en la función values_only = Truepara devolver el valor de la celda

>>> 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. Leer y escribir operaciones de archivos

10. Carga de archivos de Excel

openpyxl.load_workbook() Función para abrir un archivo xlsx almacenado localmente

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
>>> print wb2.sheetnames
['Sheet2', 'New Title', 'Sheet1']

10.2, almacenamiento de archivos de Excel

Una vez que el libro de trabajo se ha modificado y creado correctamente, se Workbook.save(path)puede guardar en el disco local mediante el comando

>>> wb = Workbook()
>>> wb.save('balances.xlsx')

Bien, lo anterior es todo el contenido de este artículo, ¡y gracias a todos por leer!

Supongo que te gusta

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