run recognized program not how python excel scripting

recognized - run python in cmd



Conducir Excel desde Python en Windows (7)

Escribí una clase de python que permite trabajar con Excel a través de la interfaz COM en Windows http://sourceforge.net/projects/excelcomforpython/

La clase usa win32com para interactuar con Excel. Puede usar la clase directamente o usarla como ejemplo. Muchas opciones implementadas como fórmulas de matriz, formato condicional, gráficos, etc.

Tenemos varias hojas de cálculo que emplean macros deliciosamente complicadas y extensiones de terceros para producir modelos complicados. Estoy trabajando en un proyecto que implica modificar ligeramente varias entradas y ver los resultados. En lugar de hacer esto a mano o escribir VBA, me gustaría ver si puedo escribir un script de Python para manejar esto. En otras palabras, la secuencia de comandos python se iniciará, cargará la hoja de Excel y luego interactuará con la hoja haciendo pequeños cambios en algunas celdas y viendo cómo afectan a otras celdas.

Entonces, mi pregunta es doble:

  • ¿Cuál es la mejor biblioteca que se puede usar para conducir Excel desde Python de esa manera?

  • ¿Dónde está la mejor documentación / ejemplos sobre el uso de dicha biblioteca?

Saludos, / YGA



He pasado alrededor de una semana, y aquí está mi implementación (o más bien prueba de concepto): https://github.com/Winand/SimplePython

La idea principal es hacer que el código de Python sea tan fácil de escribir y llamar desde Microsoft Office como macros de VBA (he creado Add-In solo para Excel).

  • Arquitectura cliente-servidor (a través de TCP), por lo que Python solo se inicia una vez
  • El servidor se inicia automáticamente si no se está ejecutando
  • El servidor vuelve a cargar automáticamente los módulos de macro cuando el usuario los cambia
  • Interfaz de control fácil de usar en cinta de Office

Lo hice usando pywin32 . No es una experiencia particularmente agradable, ya que no hay realmente ninguna abstracción; es como usar VBA, pero con la sintaxis de Python. No puede confiar en las cadenas de documentos, por lo que querrá tener a mano la referencia de MSDN Excel ( http://msdn.microsoft.com/en-us/library/aa220733.aspx es lo que utilicé, si no recuerdo mal). Debería poder encontrar los documentos de Excel 2007 si excavar un poco).

Vea here para un simple ejemplo.

from win32com.client import Dispatch xlApp = Dispatch("Excel.Application") xlApp.Visible = 1 xlApp.Workbooks.Add() xlApp.ActiveSheet.Cells(1,1).Value = ''Python Rules!'' xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = ''Python Rules 2!'' xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1 xlApp.Quit() xlApp.Visible = 0 # see note 2 del xlApp

¡Buena suerte!


Mira el proyecto DataNitro (nombre anterior IronSpread). Es un complemento de Python para Excel.


Para controlar Excel, use pywin32, como sugiere @igowen.

Tenga en cuenta que es posible usar el envío estático. Use makepy.py del proyecto pywin32 para crear un módulo python con los wrappers de Python. El uso de los contenedores generados simplifica el desarrollo, ya que, por ejemplo, ipython le proporciona la terminación de pestañas y ayuda durante el desarrollo.

Ejemplo de envío estático:

x:> makepy.py "Microsoft Excel 11.0 Object Library" ... Generating... Importing module x:> ipython

> from win32com.client import Dispatch > excel = Dispatch("Excel.Application") > wb = excel.Workbooks.Append() > range = wb.Sheets[0].Range("A1") > range.[Press Tab] range.Activate range.Merge range.AddComment range.NavigateArrow range.AdvancedFilter range.NoteText ... range.GetOffset range.__repr__ range.GetResize range.__setattr__ range.GetValue range.__str__ range.Get_Default range.__unicode__ range.GoalSeek range._get_good_object_ range.Group range._get_good_single_object_ range.Insert range._oleobj_ range.InsertIndent range._prop_map_get_ range.Item range._prop_map_put_ range.Justify range.coclass_clsid range.ListNames range.__class__ > range.Value = 32 ...

Enlaces de documentación:


Trabajé en un proyecto hogareño el año pasado que involucra a un cliente escrito como un complemento de Python Excel. El proyecto es esencialmente una base de datos en línea simplificada para el acceso del usuario final. El complemento de Excel permite a los usuarios consultar datos de la base de datos para mostrarlos en Excel.

Nunca llegué muy lejos con el complemento de Excel y mi código es un poco feo. Pero, lo que sí tengo es bajo una licencia BSD y está disponible a través de Bazar en

http://www.launchpad.net/analyz/trunk

El cliente no funcionará, ya que no tengo un servidor público funcionando en este momento, pero al menos puede ver lo que hice con el código para obtener algunas ideas sobre cómo podría funcionar. El código también le mostrará cómo crear un cuadro de diálogo MFC en 100% Python.