This document discusses using the OpenOffice UNO API with Python. It begins by introducing the UNO API and its language bindings, highlighting that Python is a directly supported language. It then provides an example of connecting to an OpenOffice instance from Python and performing basic operations like opening a document, accessing sheets, and updating cell values. The document argues that Python is a good choice for UNO applications due to its direct support and dynamic typing making for easier code. It also notes that OpenOffice includes its own Python installation for developing UNO applications.
2. “OpenOffice Application with Python” is created by imacat (Yang Shih-Ching),
and licensed under a Creative Commons Attribution 3.0 Unported License.
3. imacat
● A member of the Apache OpenOffice Project
Management Committee
● An OpenOffice committer
● The system administrator of the OpenOffice
forum and Wiki
● A PyLadies Taiwan organizer
● Graduated from National Taiwan Normal
University
23. Language BindingLanguage Binding
OpenOffice UNO API
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
OLEOLE
CLICLI
COMCOM……
24. Language BindingLanguage Binding
OpenOffice UNO API
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
25. Language BindingLanguage Binding
OpenOffice UNO API
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
Almost
Anything!
Almost
Anything!
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
26. Language BindingLanguage Binding
OpenOffice UNO API
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
Almost
Anything!
Almost
Anything!
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
Network
Socket
Network
Socket
27. Client Application AClient Application A
OpenOffice.org UNO
OpenOffice.orgOpenOffice.org
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
……
C++C++
28. Client Application AClient Application A
OpenOffice.org UNO
OpenOffice.orgOpenOffice.org
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
……
C++C++
Client Application BClient Application B
JavaJava
29. Client Application AClient Application A
OpenOffice.org UNO
OpenOffice.orgOpenOffice.org
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
……
C++C++
Client Application BClient Application B
JavaJava
Client Application CClient Application C
PythonPython
30. Client AClient A
ServerServer Client Application AClient Application A
OpenOffice.org UNO
OpenOffice.orgOpenOffice.org
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
……
C++C++
Client BClient B
Client Application BClient Application B
JavaJava
Client CClient C
Client Application CClient Application C
PythonPython
TCP/IP
Network
TCP/IP
Network
31. OpenOffice UNO API
● Universal Network Object
– Universal among programming languages
– Networked API
● Write your office application in your
favorite language!
33. Language BindingLanguage Binding
Choosing Language
for UNO Applications
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
Almost
Anything!
Almost
Anything!
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
Network
Socket
Network
Socket
34. Language BindingLanguage Binding
Directly Supported Languages
C++, Java and Python
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
Almost
Anything!
Almost
Anything!
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
Network
Socket
Network
Socket
35. Language BindingLanguage Binding
Dynamic Typed Language
Python
OpenOfficeOpenOffice
WriterWriter
CalcCalc
Impres
s
Impres
s
UNO
API
UNO
API
C++C++
JavaJava
PerlPerl
PythonPython
Almost
Anything!
Almost
Anything!
……
C#C#
VB.NETVB.NET
OLEOLE
CLICLI
COMCOM……
Network
Socket
Network
Socket
41. Choosing PyUNO
for OpenOffice UNO Applications
● Directly supported by OpenOffice itself
● Dynamic typing making everything easier
– You don't need to obtain an object's type in order
to use it
42. Choosing PyUNO
for OpenOffice UNO Applications
● Directly supported by OpenOffice itself
● Dynamic typing making everything easier
– You don't need to obtain an object's type in order
to use it
– To read, write and maintain codes become a
lot easier
44. OpenOffice Python Support
● OpenOffice ship with a Python installation
– Linux: /opt/openoffice4/program/python
45. OpenOffice Python Support
● OpenOffice ship with a Python installation
– Linux: /opt/openoffice4/program/python
– Windows: "C:Program Files (x86)OpenOffice
4programpython.exe"
46. OpenOffice Python Support
● OpenOffice ship with a Python installation
– Linux: /opt/openoffice4/program/python
– Windows: "C:Program Files (x86)OpenOffice
4programpython.exe"
– Version 2.7.6 as of OpenOffice 4.1
49. Running OpenOffice
as a Server
● In Linux
– % /opt/openoffice4/program/soffice.bin
– "-accept=socket,host=localhost,port=2002;urp;"
● In Windows
– C:>"C:Program Files (x86)OpenOffice 4programsoffice.exe"
– "-accept=socket,host=localhost,port=2002;urp;"
58. Creating a Multiplication Table
● >>> for i in range(1, 10):
● ... for j in range(1, 10):
● ... sheet.getCellByPosition(i-1, j-1).Value = i*j
● ...
● >>>