BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Export von Autokorrektureinträgen in eine CSV-Datei

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
devdol
Beiträge: 45
Registriert: Fr 11. Mär 2011, 17:59

Export von Autokorrektureinträgen in eine CSV-Datei

Beitrag von devdol » Fr 11. Mär 2011, 18:13

Nachdem ich das Utility AutoKey schätzengelernt habe, möchte ich damit am liebsten auch eine Teilmenge meiner zahlreichen Autokorrektureinträge aus LibreOffice auf dem ganzen Linux-Desktop verfügbar machen, weil sie das Schreiben so herrlich erleichtern. Nach längerer Suche, wie sich denn diese AutoCorrect-Wertepaare exportieren lassen, mußte ich feststellen, daß dazu offensichtlich noch gar keine "Patentlösung" im englisch- und deutschprachigen Web zu finden ist. Selbst die Suche nach der Datei, wo LibO diese Definitionen ablegt, war überraschend - nicht innerhalb von ~/.libreoffice/, wie man zunächst anzunehmen gewillt sein könnte. Sie stecken in einer Datei namens DocumentList.xml, diese wiederum ist versteckt in einem ZIP-Archiv des Namensschemas "~/.libreoffice/3/user/autocorr/acor_$LANG.dat", und sind dort in Form einer XML-Baumstruktur abgelegt.

Nachfolgend für alle, die ein ähnliches Anliegen haben, die in Python dafür gebastelte Notlösung - zum Wiederverwenden, Verbessern oder kommentieren, ganz wie ihr wollt. Auch als meine zwar sehr bescheidene, aber von Herzen kommende Willkommensgabe für dieses neue Forum, das sicher nicht nur ich sehnlichst erwartet habe - gestern noch hatte ich den Codeschnipsel ersatzweise noch auf linuxquestions.org abgelegt...

Code: Alles auswählen

#-*- coding: utf-8 -*-
import os, sys, zipfile, xml.dom.minidom
##########################################################
# Script to export LibreOffice Auto Correct Entries
# into a flat file (e.g. to reuse some of them with autokey)
##########################################################
ACEfile='.libreoffice/3/user/autocorr/acor_de-DE.dat'    # This is a ZIP where LibreOffice stores its auto correct entries
ifname='DocumentList.xml'                                # Name of the file inside the ZIP archive that contains auto correct entries
ofname='AutoCorrectEntries.csv'                          # any desired output file name for the export
tagname= 'block-list:block'                              # (as in DocumentList.xml)
schema=['block-list:abbreviated-name','block-list:name'] # (as in DocumentList.xml)
default_encoding='UTF-8'                                 # (as in DocumentList.xml)
ofdelimiter=";"                                          # any desired delimiter for export
##########################################################

of = open(ofname,"w")
oACE = zipfile.ZipFile(os.path.join(os.path.expanduser("~"), ACEfile))
zif = oACE.open(ifname, "r") # access as read-only ZipExtFile object
doctree = xml.dom.minidom.parse(zif)  # Parse the input file as DOM (document object model, xml-tree) into memory
if doctree.encoding:
    encoding = doctree.encoding
else:
	encoding = default_encoding
for elem in doctree.getElementsByTagName(tagname):
	acEntry=[]
	for fieldname in schema:
		acEntry.append(elem.getAttribute(fieldname))
	of.write(ofdelimiter.join(acEntry).encode(encoding)+"\n")
of.close()     # Close output file
doctree.unlink # and deallocate DOM object

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten