2016-07-15 237 views
1

我嘗試編碼查找&在LibreOffice的Calc中用Python替換方法,用「&」替換所有「。+」(在單個列中 - 不是那麼重要) - 不幸的是,即使是一個標準的查找&替換方法似乎是不可能的(對我來說)。這就是我現在所知道的:Python - LibreOffice Calc - 用正則表達式查找和替換

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 

然後會發生什麼:完全沒有!我會很高興和感謝每一個提示,示例代碼和激勵的話!

回答

0

這段代碼改變A列中所有非空單元格&

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) 

請注意,該代碼調用replaceAll真正做一些事情。此外,從User Guide

&將插入搜索RegExp找到相同的字符串。

所以替換字符串需要是文字 - \&

+0

我對你的代碼做了一些微小的改動,但總的來說它工作得很好。非常感謝! – Elsi