2016-07-15 15 views
1

Ich versuche, eine Find & Replace-Methode mit Python in LibreOffice Calc zu ersetzen, um alle ". +" Durch "&" zu ersetzen (in einer einzigen Spalte - nicht so wichtig) - leider scheint selbst eine Standard-Find & Replace-Methode unmöglich (für mich). Das habe ich bis jetzt:Python - LibreOffice Calc - Finden und Ersetzen mit regulärem Ausdruck

import uno 
def search() 
    desktop = XSCRIPTCONTEXT.getDesktop() 
    document = XSCRIPTCONTEXT.getDocument() 
    ctx = uno.getComponentContext() 
    sm = ctx.ServiceManager 
    dispatcher = sm.createInstanceWithContext("com.sun.star.frame.DispatchHelper", ctx) 
    model = desktop.getCurrentComponent() 
    doc = model.getCurrentController() 
    sheet = model.Sheets.getByIndex(0) 

    replace = sheet.createReplaceDescriptor() 
    replace.SearchRegularExpression = True 
    replace.SearchString = ".+$" 
    replace.ReplaceString ="&" 
    return None 

Und was passiert: total nichts! Ich werde glücklich und dankbar für jeden Hinweis, Beispielcode und motivierende Wörter sein!

Antwort

0

Dieser Code ändert alle nicht leeren Zellen in Spalte A bis &:

def calc_search_and_replace(): 
    desktop = XSCRIPTCONTEXT.getDesktop() 
    model = desktop.getCurrentComponent() 
    sheet = model.Sheets.getByIndex(0) 
    COLUMN_A = 0 
    cellRange = sheet.getCellRangeByPosition(COLUMN_A, 0, COLUMN_A, 65536); 
    replace = cellRange.createReplaceDescriptor() 
    replace.SearchRegularExpression = True 
    replace.SearchString = r".+$" 
    replace.ReplaceString = r"\&" 
    cellRange.replaceAll(replace) 

Beachten Sie, dass der Code ruft replaceAll tatsächlich etwas zu tun. Auch aus der User Guide:

& die gleiche Zeichenfolge mit dem Suchen RegExp gefunden einzufügen.

So muss die Ersetzungszeichenfolge literal sein - \&.

+0

Ich habe ein paar kleine Änderungen an Ihrem Code vorgenommen, aber alles in allem funktioniert es einfach großartig. Ich danke dir sehr! – Elsi

Verwandte Themen