2017-09-08 12 views
-1

J'ai actuellement écrit un script Python qui utilise UNO pour interagir avec un document LibreOffice .ods. Cependant, il est très instable et cause beaucoup d'erreurs système et se plante sur Ubuntu 17.04.Dois-je installer Excel pour utiliser Openpyxl de manière interactive? Peut-il interagir avec le format .ODS?

J'ai lu les openpyxl docs, mais je ne peux pas trouver la réponse à cette question rapide: Puis-je utiliser openpyxl sur Ubuntu pour dynamiquement manipuler un XLSX ou un document .ods avec des formules intégrées?

I.e. Je veux ouvrir le document, lire les données des cellules, mettre à jour les valeurs des cellules dans une boucle, lire les nouvelles données de sortie des formules du document, puis charger cette sortie dans un tableau numpy et fermer le document sans l'enregistrer.

Excel/libreoffice doit-il être installé pour openpyxl afin d'utiliser les formules intégrées de cette manière?

Merci

Répondre

2

OpenPyXL n'a pas besoin et ne peut pas utiliser une instance en cours d'exécution d'Excel. Il n'interagit pas du tout avec .ods. La chose la plus proche de OpenPyXL pour .ods est pyexcel-ods. Le seul moyen pratique d'évaluer les formules Excel consiste à utiliser une instance d'Excel en cours d'exécution. De même, le seul moyen pratique d'évaluer les formules de LibreOffice consiste à utiliser une instance de LibreOffice en cours d'exécution.

Donc, si vous voulez utiliser OpenPyXL ou pyexcel-ods « interactive », vous auriez à pas utiliser des formules Excel/LibreOffice, mais faire place tous les calculs avec Python.

Si vous avez besoin des formules et que vous avez besoin de les exécuter sous Linux, alors utiliser UNO sous une forme quelconque (pour contrôler une instance en cours d'exécution de LibreOffice) est probablement votre meilleur choix. Notez qu'il existe plusieurs interfaces Python différentes pour UNO, telles que PyOO et UnoTools. Je ne sais pas ce que tu utilises maintenant. Enfin, si les méthodes UNO sont vraiment instables et que vous avez accès à Excel, vous pouvez essayer xlwings. Il serait assez compliqué de faire tourner Linux sous Linux (cela pourrait nécessiter une machine virtuelle, les témoignages pour Excel sous Wine ont été mélangés au mieux).