23 votes

À l'aide de Python pour le programme de MS Office des macros?

J'ai récemment pris cela comme un projet pour m'enseigner comment programmer en Python. Dans l'ensemble, je dois dire que je suis impressionné.

Dans le passé, j'ai généralement collé à la programmation en VBA surtout pour MS Excel (mais aussi un peu dans MS Access et Word) et ont du mal à trouver des moyens de faire faire des choses que Python peut facilement le faire avec une seule commande.

Je me demandais si il y avait un moyen raisonnable d'exploiter la puissance de programmation et la facilité de python alors que dans le même temps, utiliser les différents outils dans office (surtout excel)?

18voto

jcoon Points 5693

Oui, absolument. Vous souhaitez utiliser win32com module, qui fait partie de pywin32 (ici).

J'ai trouvé que vous pouvez vraiment vous simplifier Python intégration par l'écriture d'une macro en VBA pour Python à utiliser, et puis juste avoir Python appel de la macro. Il ressemblera à quelque chose comme ceci:

from win32com.client import Dispatch as comDispatch

xl = comDispatch('Excel.Application')
xl.Workbooks.Open("Macros.xls", False, True)
xl.Run("Macros.xls!Macro_1")

Je suis sûr qu'il y a plently de exemples sur SO... Comme cette une.

7voto

raindog Points 71

Ou jeter un oeil à IronPython. L'api est un natif .NET de la mise en œuvre de la version 2.6 de Python, vous pouvez le trouver à http://www.codeplex.com/ironpython.

Nous l'avons utilisé pour plusieurs projets. Vous pouvez l'utiliser "de l'extérieur" à l'aide de COM ou - comme nous le faire - écrire un Excel AddIn avec un ScriptHost, qui appelle à IronPython code vous donnant un environnement similaire à VBA.

Être une .NET dll, Api s'intègre très bien dans les Fenêtres modernes .NET de la pile.

7voto

GreenMatt Points 6301

Il existe un ensemble de croix-plate-forme de Python utilitaires - disant xlrd, xlwt, et xlutils - pour la lecture et l'écriture de fichiers Excel. Il y a quelques limitations (par exemple, je ne pense pas qu'ils peuvent traiter les macros), mais ils ne vous permettent de travailler avec des fichiers Excel sur les plateformes non-Windows, si c'est de l'utiliser pour vous. Voir: http://www.python-excel.org/

Aussi, il y a TELLEMENT de questions déjà aux prises avec ce genre de sujet, y compris ce: http://stackoverflow.com/questions/528817/is-there-a-better-way-besides-com-to-remote-control-excel

3voto

sequoia Points 663

Le xlrd, xlwt, et xlutils paquets mentionnés ci-dessus ne peuvent lire et à écrire .les fichiers xls qui ont des limitations de taille de 65 000 lignes et 256 colonnes. En dehors de cela il est un bon outil.

Mais j'ai déménagé sur un autre python-excel paquet, OpenPyXL, qui peut lire et écrire .fichiers xlsx. Aussi je le trouve facile à utiliser, et la documentation est bonne.

OpenPyXL: http://packages.python.org/openpyxl/index.html

2voto

denfromufa Points 174

voici un lien utile:

http://continuum.io/using-excel

  1. Essayez encore pyvot – Un Python vers/à partir d'Excel Connecteur de Microsoft:

http://pytools.codeplex.com/wikipage?title=Pyvot

J'aime aussi beaucoup PTVS de la même dev. l'équipe, qui fournit le plus de débogage Python que j'ai vécu jusqu'à présent.

2.

Ce que vous pouvez faire avec VBA + Python est la suivante:

Compiler votre py, scripts dont les entrées et générer des résultats sous forme de fichiers texte ou à partir de la console. Puis VBA permettra de préparer des entrées pour py, appelez le pré-compilé py script et de le lire à sa sortie.

3.

Envisager d'OpenOffice ou de LibreOffice qui soutiennent des scripts Python.

C'est en supposant que les options disponibles avec COM ou MS interfaces de script ne répondent pas à vos besoins.

4.

Ce n'est pas gratuit, mais vaut la peine de mentionner (en vedette dans Forbes et le New York Times):

https://datanitro.com

5.

Ce n'est pas gratuit pour un usage commercial:

PyXLL - Excel add-in qui permet aux fonctions écrites en Python pour être appelé dans Excel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X