🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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 gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten