2016-04-14 2 views
1

Ich habe nach einer Weile für einige benutzerfreundliche Tutorial zu diesem Thema, aber ohne Glück gesucht.Python Makro für LibreOffice - ersetzen String im Text

Ich möchte ein Makro in Python für LibreOffice schreiben, die Zeichenfolge in derzeit geöffneten Dokument in Writer ersetzen würde. Überraschenderweise scheint es keine offiziellen Anleitungen, Dokumentationen oder sogar Beispiele von Entwicklern oder Benutzern zu geben.

Was ich wissen muss, ist Wie kann ich in Python auf den Text des derzeit geöffneten Dokuments zugreifen und ändern Sie es? Arbeitsbeispiel wäre toll, aber jede Hilfe wird sehr geschätzt.

Antwort

3

Ein einfaches "Hallo Welt" Beispiel ist wie folgt:

def hello(): 
    XSCRIPTCONTEXT.getDocument().getText().setString("Hello!") 

# Functions that can be called from Tools -> Macros -> Run Macro. 
g_exportedScripts = hello, 

https://wiki.openoffice.org/wiki/Python/Transfer_from_Basic_to_Python See.

Wie Sie Text suchen und ersetzen, hängt von Ihren Anforderungen ab. Einmal oder alle Vorkommen ersetzen? Ersetzen Sie in gewöhnlichem Text oder auch in Elementen wie Tabellen, Rahmen oder Überschriften? Groß-/Kleinschreibung oder vielleicht reguläre Ausdrücke? Beispiele in Basic finden Sie in Abschnitt 7.14 in Andrew Pitonyak's macro document. Hier

ist ein funktionierendes Beispiel in Python, die alle Vorkommen ändert die „Suche nach“ auf „Änderung“:

document = XSCRIPTCONTEXT.getDocument() 
search = document.createSearchDescriptor() 
search.SearchString = "search for" 
search.SearchAll = True 
search.SearchWords = True 
search.SearchCaseSensitive = False 
selsFound = document.findAll(search) 
if selsFound.getCount() == 0: 
    return 
for selIndex in range(0, selsFound.getCount()): 
    selFound = selsFound.getByIndex(selIndex) 
    selFound.setString("change to") 
+0

Sie mein Held sind;) Nicht nur der Code funktioniert wie versprochen, aber der Link zur Verfügung gestellt ist auch super! Vielen Dank! – lsrom

Verwandte Themen