I can write data into ods when libreoffice is in interactive mode.
1.launch LibreOffice Calc within interactive mode
soffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
2.launch Python Shell
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext )
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
model = desktop.getCurrentComponent()
active_sheet = model.CurrentController.ActiveSheet
cell1 = active_sheet.getCellRangeByName("C4")
cell1.String = "Hello world"
outputFile = 'file:///tmp/out.ods'
model.storeAsURL(outputFile, ())
model.dispose()
I write data into /tmp/out.ods
,save and close it.How can i write data within libre0ffice-calc’s headless mode?
With same procedure:
1.launch LibreOffice Calc without interactive mode
soffice --calc --headless --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
2.launch Python Shell
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext )
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx) # access the current writer document
model = desktop.getCurrentComponent()
active_sheet = model.CurrentController.ActiveSheet
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
AttributeError: 'NoneType' object has no attribute 'CurrentController'
How to fix it?