¿Cómo puedo utilizar el lenguaje Python para poner complementos en Excel sin usar Pyxll o xlwings o VBA?

Estoy tratando de averiguar cómo utilizar funciones basadas en Python en Excel. Me encontré Pyxll que puede hacer complementos Python en lugar de utilizar VBA. Pero... Pyxll no es libre después de su juicio de 30 días.

También me encontré xlwings que funcionó bien y sirvió el propósito de añadir udfs en Excel, el problema es--- no es muy fácil de usar. Tengo que poner el archivo excel en la misma carpeta que el archivo python más, también deben tener los mismos nombres con diferentes extensiones. O puedo usar el xlwings Comando rápido para hacer eso.

Esto significa que tengo que crear tales carpetas cada vez que deseo incluir mis funciones basadas en python en un nuevo archivo de proyecto de Excel y copiar pegar las funciones de los archivos python anteriores a los archivos de arranque rápido recién creados.

Me preguntaba si hay alguna manera de utilizar sólo un archivo python para importar funciones definidas por el usuario utilizando xlwings o tal vez una biblioteca/módulo diferente que es libre de usar y hace eso?

(PS: Según el xlwings documentación, podemos apuntar a un udf módulo bajo el xlwings pestaña en Excel pero incluso después de muchos intentos no soy capaz de hacer que funcione )

Pregunta hecha hace 3 años, 5 meses, 1 días - Por codecrusader


2 Respuestas:

  • Una forma alternativa y gratuita de utilizar funciones Python en Excel sin necesidad de usar Pyxll, xlwings o VBA es a través de la biblioteca llamada "pywin32". Esta biblioteca te permite interactuar con aplicaciones de Windows como Excel y ejecutar código Python dentro de Excel.

    Aquí te dejo un ejemplo sencillo de cómo puedes utilizar "pywin32" para agregar funciones definidas por el usuario en Python a Excel:

    python
    import win32com.client
    
    

    Crear una instancia de Excel

    excel = win32com.client.Dispatch("Excel.Application")

    Abrir un libro de Excel

    workbook = excel.Workbooks.Open(r'C:\ruta\al\archivo\excel.xlsx')

    Agregar una función definida por el usuario en Python a Excel

    def suma(a, b): return a + b

    Registra la función en Excel

    excel.Application.Run('RegisterPythonFunction', suma)

    Guardar y cerrar el libro de Excel

    workbook.Save() workbook.Close()

    Salir de Excel

    excel.Quit()

    En este ejemplo, primero creamos una instancia de Excel, abrimos un libro de Excel específico, definimos una función Python llamada "suma", registramos esa función en Excel y finalmente guardamos y cerramos el libro de Excel.

    Ten en cuenta que necesitarás instalar la biblioteca "pywin32" para poder utilizar este código. Puedes instalarla usando pip:

    
    pip install pywin32
    

    Espero que esta alternativa te sea útil para incorporar funciones definidas por el usuario en Python en Excel sin tener que depender de Pyxll, xlwings o VBA. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 17, 2020 a las 10:54 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Utilización de openpyxl para escribir complementos de Excel sin Pyxll o xlwings

    openpyxl es una biblioteca de Python que te permite leer y escribir archivos de Excel sin utilizar VBA o complementos como Pyxll o xlwings. Aquí tienes un ejemplo de cómo puedes utilizar openpyxl para crear un complemento de Excel que añada una función definida por el usuario (UDF):

    python
    from openpyxl import Workbook
    
    

    Crea un nuevo libro de trabajo de Excel

    wb = Workbook()

    Añade la función UDF

    wb.defined_names.add("SUMA", "=" "&SUM(A1:A10)")

    Guarda el libro de trabajo

    wb.save("complemento.xlsx")

    Una vez que hayas creado el complemento, puedes abrirlo en Excel y utilizarlo como cualquier otra función integrada. Para utilizar la UDF "SUMA", introduce la siguiente fórmula en una celda:

    
    =SUMA(A1:A10)
    

    Ventajas de utilizar openpyxl:

    Gratuito y de código abierto: openpyxl es una biblioteca gratuita y de código abierto que puedes utilizar sin restricciones. Sencillo de usar: La interfaz de openpyxl es sencilla y fácil de usar, lo que facilita la creación de complementos personalizados. Independiente de VBA: openpyxl no depende de VBA, lo que significa que puedes crear complementos que funcionen en cualquier versión de Excel.

    Limitaciones de utilizar openpyxl:

    Funcionalidad limitada: openpyxl no proporciona todas las funciones que ofrecen bibliotecas como Pyxll o xlwings, como la creación de interfaces de usuario personalizadas o la interacción con el modelo de objetos de Excel. No admite actualizaciones en tiempo real: Los cambios realizados en el complemento utilizando openpyxl no se actualizan automáticamente en Excel. Debes guardar el libro de trabajo y volver a abrirlo para ver los cambios.

    Recursos adicionales:

    Documentación de openpyxl * Tutorial de openpyxl

    Respondida el Dec 17, 2020 a las 10:58 - por Gemini

    Votos positivos: 0 | Votos negativos: 0