Ask Your Question
1

create styles in writer using vb.net

asked 2012-07-16 18:33:37 +0200

raspberry gravatar image raspberry
21 4

updated 2013-02-20 05:55:04 +0200

qubit gravatar image qubit flag of United States
5709 3 48 41

I would like to be able to use VB.Net to create and apply character styles in writer. Can anyone supply a code snippet or point me to a location that has code I can look at. Thanks...

delete close flag offensive retag edit

Comments

Do you mean "using LibreOffice Basic to create and apply charactes styles"?

Olivier ( 2012-07-16 20:08:16 +0200 )edit

No. I would like to use Microsoft's Visual Basic.Net to automate Writer.

raspberry ( 2012-07-16 23:03:06 +0200 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2012-07-16 23:22:00 +0200

raspberry gravatar image raspberry
21 4

Here is additional information (I hope it is not too much...):

The following code is from http://api.libreoffice.org/examples/examples.html#CLI_examples.

This code is VB.Net It shows how to open a Writer doc from VB.Net, add text, add a table and do other items. It does not show how to create and apply styles. Below is the portion that opens and connects to a new Writer doc.

    Dim xContext As XComponentContext
    xContext = Bootstrap.bootstrap()

    Dim xFactory As XMultiServiceFactory
    xFactory = DirectCast(xContext.getServiceManager(), XMultiServiceFactory)

    'Create the Desktop
    Dim xDesktop As unoidl.com.sun.star.frame.XDesktop
    xDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"),  _
        unoidl.com.sun.star.frame.XDesktop)

    'Open a new empty writer document
    Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader
    xComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader)

    Dim arProps() As unoidl.com.sun.star.beans.PropertyValue = New unoidl.com.sun.star.beans.PropertyValue() {}
    Dim xComponent As unoidl.com.sun.star.lang.XComponent
    xComponent = xComponentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, arProps)

    Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument
    xTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)

    'Create a text object
    Dim xText As unoidl.com.sun.star.text.XText
    xText = xTextDocument.getText()

    Dim xSimpleText As unoidl.com.sun.star.text.XSimpleText
    xSimpleText = DirectCast(xText, unoidl.com.sun.star.text.XSimpleText)

    'Create a cursor object
    Dim xCursor As unoidl.com.sun.star.text.XTextCursor
    xCursor = xSimpleText.createTextCursor()

I also have a code snippet in Java that creates styles in Writer, but I do not know Java and I have not been able to translate from Java to VB.Net. This is from http://api.libreoffice.org/examples/DevelopersGuide/examples.html#FirstSteps.

   // Create a new style from the document's factory
        XStyle xStyle = (XStyle) UnoRuntime.queryInterface(
            XStyle.class, mxDocFactory.createInstance(
                "com.sun.star.style.ParagraphStyle" ) );

        // Access the XPropertySet interface of the new style
        XPropertySet xStyleProps = (XPropertySet) UnoRuntime.queryInterface(
            XPropertySet.class, xStyle );

        // Give the new style a light blue background
        xStyleProps.setPropertyValue ( "ParaBackColor", new Integer (13421823));

        // Get the StyleFamiliesSupplier interface of the document
        XStyleFamiliesSupplier xSupplier = (XStyleFamiliesSupplier)
            UnoRuntime.queryInterface(XStyleFamiliesSupplier.class, mxDoc);

        // Use the StyleFamiliesSupplier interface to get the XNameAccess
        // interface of the actual style families
        XNameAccess xFamilies = ( XNameAccess ) UnoRuntime.queryInterface (
            XNameAccess.class, xSupplier.getStyleFamilies() );

        // Access the 'ParagraphStyles' Family
        XNameContainer xFamily = (XNameContainer ) UnoRuntime.queryInterface (
                    XNameContainer.class,
                    xFamilies.getByName ( "ParagraphStyles" ) );

        // Insert the newly created style into the ParagraphStyles family
        xFamily.insertByName ( "All-Singing All-Dancing Style", xStyle );

        // Get the XParagraphCursor interface of the document cursor
        XParagraphCursor xParaCursor = (XParagraphCursor)
            UnoRuntime.queryInterface( XParagraphCursor.class, mxDocCursor );

        // Select the first paragraph inserted
        xParaCursor.gotoPreviousParagraph ( false );
        xParaCursor.gotoPreviousParagraph ( true );

        // Access the property set of the cursor selection
        XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(
            XPropertySet.class, mxDocCursor );

        // Set the style of the cursor selection to our newly created style
        xCursorProps.setPropertyValue ( "ParaStyleName",
                                        "All-Singing All-Dancing Style" );

This is what I have so far. If anyone could help me port the Java code to VB.Net or show how to create and apply Writer styles in VB.Net it would really help get me over this hump. Thanks....

link delete flag offensive edit

Comments

@raspberry -- Still looking for an answer to your question?

qubit ( 2013-03-13 10:16:45 +0200 )edit

Login/Signup to Answer

Donate

LibreOffice is made available by volunteers around the globe, backed by a charitable Foundation. Please support our efforts: Your donation helps us to deliver a better product!

Question tools

Follow

subscribe to rss feed

Stats

Asked: 2012-07-16 18:33:37 +0200

Seen: 310 times

Last updated: Jul 16 '12