What are the best resources: books, videos, courses, etc for learning how to write extensions for LibreOffice?

Hi Everyone,

I am interested in learning how to write extensions for LibreOffice.

Which programming languages are best to use for this purpose? Java, C#, or Python? or all three?

And assuming that the programming language itself may not be that important, what are the best resources available for learning how to program extensions to LibreOffice? I am interested in all the applications within the suite and I am interested in interoperability between the applications as well.

Any suggestions for books, courses, or videos to learn how to do this?

Please understand that I am essentially a beginner. I have not really done any programming since the days of Fortran and TurboPascal – roughly thirty years ago.

All the best,



The must read is probably working through the great resources and philosophical musings at 0: The Table of Contents of the Series, 'Exploiting an Open-Source Office Suite'|T.B.P.. However, it will be a hard climb from rusty TurboPascal. See also LibreOffice Basic Programming -- Resources for Learning.

It’s been a number of years, but have created an extension using Java. See this post > How to correctly use LOEclipse?

Have not looked at this in years until your post. Did create a simple service which results in:
Screenshot at 2022-04-02 19-26-05

The answer in the link has a link to the post which is the basis for this. Here is a piece of the Java code:

    private String mLadyName = "";

    public String getLadyName()
        return mLadyName;
    public void setLadyName(String the_value)
        mLadyName = the_value;
    public String sayHello(boolean isBadBoy)
        String hello = "Hello Mrs. " + getLadyName();
        if (isBadBoy) {
            hello = "A third is nowhere near the answer";
        return hello;

If you want to try the extension, here it is:
myComponent2.odt (9.7 KB)
Since this site does not allow .oxt files it is set as a .odt file. Rename and install as an extension. Then you can use this basic code to run:

Sub testHelloworld
    oHelloworld = createUnoService( "my.company.helloworld2.Helloworld2" )
    oHelloworld.LadyName = "Eugene o'Reilly"
    msgBox oHelloworld.sayHello( false ) & Chr(10) & oHelloworld.sayHello( True )
End Sub

I used a Writer doc to test.

Do not expect instant gratification with what I presented. Even with other background this was time consuming to get to this point.