2015-04-27 39 views
0

沒有爲自由報/ OpenOffice的作家一個python-HelloWorld示例(包含在LibreOffice中4.1.6.2:Python中的 「Hello World」 爲LibreOffice中,鈣和OpenOffice,鈣

def HelloWorldWriter(): 
    """Prints the string 'Hello World(in Python)' into the current document""" 
#get the doc from the scripting context which is made available to all scripts 
    desktop = XSCRIPTCONTEXT.getDesktop() 
    model = desktop.getCurrentComponent() 
#check whether there's already an opened document. Otherwise, create a new one 
    if not hasattr(model, "Text"): 
     model = desktop.loadComponentFromURL(
      "private:factory/swriter","_blank", 0,()) 
#get the XText interface 
    text = model.Text 
#create an XTextRange at the end of the document 
    tRange = text.End 
#and set the string 
    tRange.String = "Hello World (in Python)" 
    return None 

該腳本檢查一個開放的作家的文檔,創建如果不存在,一個新的和一個字符串輸出到該文件

有沒有的LibreOffice/OpenOffice的-CALC類似

理想的情況下,它應該包括:?

· Read a table cell 
· Write a table cell 
· Save as ODT/XLS/CSV 

回答

1

對於開放式辦公檢查: http://stuvel.eu/ooo-pythonhttp://www.apidev.fr/blog/2011/07/18/utiliser-openoffice-avec-python/的解釋是法語,但檢查代碼:使用鈣

import os, sys 
if sys.platform == 'win32': 
#This is required in order to make pyuno usable with the default python interpreter under windows 
#Some environment varaible must be modified 

#get the install path from registry 
import _winreg 
value = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\OpenOffice.org\UNO\InstallPath') 
install_folder = '\\'.join(value.split('\\')[:-1]) 

#modify the environment variables 
os.environ['URE_BOOTSTRAP'] = 'vnd.sun.star.pathname:{0}\\program\\fundamental.ini'.format(install_folder) 
os.environ['UNO_PATH'] = install_folder+'\\program\\' 
sys.path.append(install_folder+'\\Basis\\program') 
paths = '' 
for path in ("\\URE\\bin;", "\\Basis\\program;"): 
    paths += install_folder + path 
os.environ['PATH'] = paths+ os.environ['PATH'] 
import uno 

class UnoClient: 
def __init__(self): 
    localContext = uno.getComponentContext() 
    resolver = localContext.ServiceManager.createInstanceWithContext(
     "com.sun.star.bridge.UnoUrlResolver", localContext) 
    self.smgr = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ServiceManager") 
def create_document(self, app): 
    remoteContext = self.smgr.getPropertyValue("DefaultContext") 
    desktop = self.smgr.createInstanceWithContext("com.sun.star.frame.Desktop",remoteContext) 
    url = "private:factory/{0}".format(app) 
    return desktop.loadComponentFromURL(url,"_blank", 0,()) 

你應該使用它這樣的:

calc = UnoClient().create_document('scalc') #cree un nouveau classeur 
sheet = calc.getSheets().getByIndex(0) #1ere feuille du classeur 
sheet.getCellByPosition(0, 0).setString("Salut") #Un texte 
sheet.getCellByPosition(0, 1).setValue(3.14) #Un nombre 
sheet.getCellByPosition(0, 2).setFormula("=SUM(2+2)") #Une formule 
sheet.getCellByPosition(0, 2).CellBackColor = int("ff7f00", 16) #Couleur RGB de fond 
sheet.getCellByPosition(0, 2).CharUnderline = 1 # Souligne 
sheet.getCellByPosition(0, 2).CharHeight = 16 #Taille de la police 
sheet.getCellByPosition(0, 2).CharWeight = 150 #Gras 
sheet.getCellByPosition(0, 2).CharPosture = 2 #Italique 

並檢查它! http://oosheet.hacklab.com.br/