Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/02/2025, à 16:45

Roger-Gabriel

Gnumeric 1.12.56 réécriture d'un greffon

Avec la version 1.12.46 j'avais eu quelques problèmes pour faire fonctionner un greffon, principalement  de mon fait voir :
.
Je croyais résoudre mon problème facilement :
https://forum.ubuntu-fr.org/viewtopic.php?id=2056672
oui c'est moi !

sudo apt install gnumeric-plugins-extra

,
Oui mais Non finalement, avec la version 1.12.56 c'est différent car voilà ce que je trouve pour l'instant :
https://stackoverflow.com/questions/752 … -installat

Le module de Gnumeric est obsolète, il a été remplacé par le module de gi.

Pour facilité la compréhension ce qui est en citation sous fond blanc précédé de >>>, ceux sont les commandes passées dans la console python de Gnumeric.

Le module Gnumeric ne dispose plus de 2 fonctions : 'Boolean', 'CellPos',.

>>> import Gnumeric
>>> dir(Gnumeric)
['FALSE', 'GnumericError', 'GnumericErrorDIV0', 'GnumericErrorNA', 'GnumericErrorNAME', 'GnumericErrorNULL', 'GnumericErrorNUM', 'GnumericErrorREF', 'GnumericErrorVALUE', 'TRUE',
'__doc__', '__loader__', '__name__', '__package__', '__spec__', 'functions']

Si je fais "import gi" pas de message d'erreur et avec dir (gi)

>>> import gi
>>> dir(gi)
['PyGIDeprecationWarning', 'PyGIWarning', 'Repository', '_API', '_DummyStaticModule', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__',
'__spec__', '__version__', '_error', '_gi', '_gi_cairo', '_gobject', '_overridesdir', '_static_binding_error', '_versions', 'check_version', 'extend_path', 'get_required_version', 'importlib', 'os',
'require_foreign', 'require_version', 'require_versions', 'sys', 'types', 'version_info'

Revenir à la version 1.12.46 m'a l'air plus difficile que je ne l'imaginais.
La documentation sur le module gi me semble très lacunaire, mais le module lui même me semble plus complet que l'ancien module gnumeric.
Le module python gnumeric était en python 2.7, je suppose que le nouveau module est en python 3.

Comme disait Boris Vian :
"A mesur' que je deviens vieux
Je m'en aperçois mieux
J'ai le cerveau qui flanche"

Pour que le greffon fonctionne il faut le réécrire avec le nouveau vocabulaire, si quelqu'un avait des suggestions voilà le code.

# abc.py
#

import sys
import Gnumeric
import csv
# importer les produits
def f_abc_action1() :
    a=2
    wb = Gnumeric.workbooks()[0]
    sheet = wb.sheets()[0]
    with open('/fichier', 'r') as file:
        reader = csv.reader(file, delimiter=';')
        for row in reader:
            sheet.cell_fetch(0,a).set_text('%s' % row[0])

J'ai trouvé un bout code ici :
https://mail.gnome.org/archives/gnumeri … 00001.html

from gi.repository import Gnm
wb=Gnm.App.workbook_get_by_index(0)

Il y a un module gi.repository.
Malheureusement il n'y a pas de module Gnm dans repository
J'ai trouvé le module Gnm sur la toile :
https://lazka.github.io/pgi-docs/#Gnm-1 … 12-1-12-57
Il y a la fonction que je cherche "cellpos"

J'ai essayé d'installer Gnm avec le terminal il n'est pas dans les dépôts :

sudo apt install Gnm
E: Impossible de trouver le paquet Gnm

J'ai fini par trouver ce paquet
Il faut installer gir1.2-gnumeric
Dans le terminal

sudo apt-get install gir1.2-gnumeric

Ensuite dans la console

>>> import gi
>>>gi.require_version('Gnm', '1.12')
>>>from gi.repository import Gnm
>>>print(Gnm)
<GnmProxyModule <IntrospectionModule 'Gnm' from '/usr/lib/x86_64-linux-gnu/girepository-1.0/Gnm-1.12.typelib'>>

La commande gi.require_version('Gtk', '1.12') est indispensable sinon on a un message d'erreur :

Warning (from warnings module):
  File "<pyshell#1>", line 1
PyGIWarning: Gnm was imported without specifying a version first. Use gi.require_version('Gnm', '1.12') before import to ensure that the right version gets loaded.

La documentation sur Gmn exhaustive est :
https://lazka.github.io/pgi-docs/Gnm-1.12/index.html
Il y a trois fonctions sheet, sheets, Sheet.
Seule la fonction Sheet à les classes qui m’intéressent.
cell_set_text (col, ligne, str)
cell_fetch (col, row)
Le problème est d'articuler Gnm.Workbook avec Gnm.Sheet.

Dernière modification par Roger-Gabriel (Le 25/02/2025, à 21:04)

Hors ligne