Utiliser l'application LibreOffice en Python (2) Manipuler calc (à partir d'une macro et externe)

Commençons par utiliser calc.

L'opération est simple, il suffit de mettre un nombre dans la cellule A1. J'essaye avec ** windows **.

En guise de préparation, lancez d'abord un nouveau calc.

** macro **

Veuillez mettre le script python écrit ci-dessous à la place de votre propre macro.

def a1():
  doc = XSCRIPTCONTEXT.getDocument()
  sheet = doc.getSheets().getByName('Sheet1')
  A1 = sheet.getCellRangeByName('A1')
  A1.Value = 100

Exécutez Outils-> Macro-> Gérer les macros-> python-> Script applicable-> a1. Vers A1 Contient 100.

** Fonctionner de l'extérieur **

Comme il est difficile de déboguer avec des macros, nous allons permettre d'opérer en utilisant des scripts python de l'extérieur. Pour l'instant, Windows ne peut effectivement utiliser que le python fourni avec LibreOffice. La situation semble être la même sur Mac et Ubuntu. En d'autres termes, c'est assez gênant car vous ne pouvez pas ajouter de modules librement **.

** (Préparation) ** --python utilise la pièce jointe LibreOffice (n'est pas en conflit avec les autres pythons)

(Commencez) Commencez par une commande batch (veuillez la nommer librement) avec les options comme indiqué ci-dessous. Notez qu'il y a deux lignes. La fenêtre DOS reste ouverte. Il vaut mieux en faire un service, mais pour le moment, c'est la voie à suivre. Une fois lancé, ** cliquez une fois sur la feuille. ** La cause est inconnue, mais cela ne fonctionne que si vous cliquez dessus une fois.

"C:\Program Files (x86)\LibreOffice 5\program\soffice.exe" ^
--calc --norestore --accept=socket,host=localhost,port=8100;urp

Ce qui suit est identique à la macro. Puisqu'il est fourni avec libreoffice, uno est importé Tu devrais être capable de. On suppose qu'un nouveau calc est ouvert. accéder au document courant Ce qui suit est le même contenu que la macro. Avant cela, il y a encore des parties que je ne comprends pas. Exécutez avec le nom du script python (n'hésitez pas à le nommer).

# -*- coding: utf-8 -*-
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", localContext)
#connect to the running office
ctx = resolver.resolve( "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
# get the central desktop object
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)

# access the current  document ( calc )
doc = desktop.getCurrentComponent()
sheet = doc.getSheets().getByName('Sheet1')
A1 = sheet.getCellRangeByName('A1')
A1.Value = 999

Le développement est meilleur que les macros seules, car les macros et le monde extérieur peuvent désormais faire la même chose. Même s'il est externe, cela n'est pas pratique car vous ne pouvez pas utiliser pip ou ipython car vous devez utiliser la pièce jointe libreoffice (pour le moment).

Recommended Posts

Utiliser l'application LibreOffice en Python (2) Manipuler calc (à partir d'une macro et externe)
Utilisez l'application LibreOffice en Python (3) Ajouter une bibliothèque
Utilisation de l'application LibreOffice en Python (1) Où sont les macros?
Manipulez le presse-papiers en Python et collez le tableau dans Excel
Manipuler des fichiers et des dossiers en Python
Utilisez l'API Flickr de Python
Comment utiliser is et == en Python
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Déployer et utiliser le modèle de prédiction créé en Python sur SQL Server
Comment utiliser la bibliothèque C en Python
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
À propos de la différence entre "==" et "is" en python
Charger et exécuter la commande depuis yml avec python
Utilisez PIL en Python pour extraire uniquement les données souhaitées d'Exif
Utilisez Python dans votre environnement depuis Win Automation
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Obtenez des informations de localisation (latitude et longitude) à partir de l'adresse. Géocodage en Python ~ Géocodeur et pydams ~
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
Recevez le formulaire en Python et faites diverses choses
Développement d'applications pour tweeter en Python à partir de Visual Studio 2017
Comprenez attentivement la distribution exponentielle et dessinez en Python
Tracer et comprendre la distribution normale multivariée en Python
Je voulais utiliser la bibliothèque Python de MATLAB
Utilisez CASA Toolkit dans votre propre environnement Python
Trouvez la partie 575 de Wikipedia en Python
Comprendre attentivement la distribution de Poisson et dessiner en Python
% Et str.format () en Python. Lequel utilisez-vous?
Trouvez la matrice Hermite et ses valeurs uniques en Python
Utilisons les données ouvertes de "Mamebus" en Python
Comment utiliser le modèle appris dans Lobe en Python
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utilisez MySQL depuis Python
Utiliser MySQL depuis Python
Manipuler riak depuis python
Utilisez BigQuery depuis Python.
Utilisez mecab-ipadic-neologd de Python
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
2015-12-26 python2> datetime> Implémentation pour prendre la différence en secondes entre deux chaînes datetime au format ISO> Utiliser .seconds ()
[Python] Lorsque vous souhaitez importer et utiliser votre propre package dans le répertoire supérieur
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Comment utiliser la méthode __call__ dans la classe Python
Obtenez le type MIME en Python et déterminez le format de fichier
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Obtenez la valeur tout en spécifiant la valeur par défaut de dict en Python
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
J'ai essayé de programmer le test du chi carré en Python et Java.
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
[Astuces] Problèmes et solutions dans le développement de python + kivy
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
Exploitez LibreOffice avec Python
Utiliser la fonction de rappel en Python