xlwings: módulo de operación de Excel fácil de usar de Python

prefacio

Debido a la necesidad de la reconciliación de fin de mes, es necesario comparar los datos de una determinada columna en varios Excel para averiguar la diferencia entre los datos de una determinada columna en la tabla principal y columnas similares en varias otras tablas de Excel. Originalmente, wps tiene una función de comparación de diferencia de datos, pero debe cargarse, por lo que solo puedo escribir una función solo, solo use xlwings

proceso

1. Familiarizado con xlwings

que es xlwings

xlwings es un módulo de python que puede realizar casi todas las operaciones en Excel y también puede reemplazar a vba para implementar de manera inversa llamar a python en Excel para procesar datos. Soporta mac y win

operación básica

  1. xlwings contiene 4 niveles de objetos y operaciones: Aplicación (programa de Excel) —> Libro (documento de Excel) —> Hoja (página del documento) —> Rango (celda del documento)
    estructura del objeto xlwings
  2. Ejemplo de código de operación básica
# 示例1
import xlwings as xw
wb = xw.Book('test.xlsx') # 如果只是打开单个文档的情况下,完全可以用xw来替代app
sheet = wb.sheets[0]
a1 = sheet.range('A1').value
# 示例2
import xlwings as xw
app = xw.App()
book = app.books.open('test.xlsx')
sheet = app.books['test.xlsx'].sheets[0]
# 选择第一个单元格
range_obj = sheet.range('A1')
# 选取第一列
range_obj = sheet.range('A1').expand('down')
# 选取第一行
range_obj = sheet.range('A1').expand('right')
# 选取表格
range_obj = sheet.range('A1').expand('table')
# range的总行数
rows_count = range_obj.rows.count
# range的第一行行标
row_index = range_obj.row
# 返回range的列数
columns_count = range_obj.columns.count
# range的第一列列标
column_index = range_obj.column
# 设置range的颜色
range_obj.color=(255,255,255)
# 清除range的背景色
range_obj.color=None
# 获取公式或者输入公式
range_obj.formula='=SUM(B1:B5)'
# 存储单个数据
range_obj.value=666
# 横向存储多个数据
sheet_obj.range('A1').value=[1,2,3]  #等同sheet_obj.range('a1:c1').value = [1,2,3]
#纵向存储多个数据
sheet_obj.range('A1').options(transpose=True).value=[1,2,3]
#直接存储多维数据
# 将2x2表格,储存在A1:B2中,如第一行1,2,第二行3,4
sheet_obj.range('A1').options(expand='table').value=[[1,2],[3,4]] 
# 同上
sheet_obj.range('A1').expand('table').value = [[1,2],[3,4]]
# 读取数据的方法一致,为赋值左侧方法

2. Tener un problema

La versión de Excel es demasiado baja para ser completamente automatizada. Debido al entorno (Windows, la versión de Excel instalada es muy antigua, algunos formatos no son compatibles, se informan errores, se requiere intervención humana y la eficiencia es baja), la fuerza principal generalmente usa wps, por lo que planeo llamar a wps directamente

3. Resuelve el problema

  1. Primero busqué en Baidu y encontré que hay muchas soluciones, muchas de las cuales están cambiando directamente el código fuente de la biblioteca. Después de probarlo, no hay ningún problema. Pero siempre siento que este tipo de solución es insostenible. Quizás algún día el módulo se actualice y tenga que volver a cambiarlo.
  2. Después de buscar detenidamente, encontré una introducción externa sin modificar el código fuente: python usa xlwings para operar wps
# 运行程序前,传入自定义的impl就可以了
_xl = COMRetryObjectWrapper(DispatchEx("ket.Application")) # 标识用wps运行
impl = xw._xlwindows.App(add_book=False, xl=_xl)
app = xw.App(visible=False, add_book=False, impl=impl) # visible可以控制是否展示wps

Resumir

xlwings, el funcionamiento de excel es super sencillo. Use el programa para abrir el documento para operar el documento de Excel. Después de que el programa salga, la modificación se guardará automáticamente sin una operación especial.

Referencia y Extensión

  1. xlwings
  2. Documentación oficial de xlwings - Inglés

Supongo que te gusta

Origin blog.csdn.net/qinmin1/article/details/126467699
Recomendado
Clasificación