Ask Your Question
1

create styles in writer using vb.net [closed]

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

raspberry gravatar image

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

qubit gravatar image

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...

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by Alex Kemp
close date 2015-10-17 01:20:18.282128

Comments

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

Olivier gravatar imageOlivier ( 2012-07-16 20:08:16 +0100 )edit

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

raspberry gravatar imageraspberry ( 2012-07-16 23:03:06 +0100 )edit

1 Answer

Sort by » oldest newest most voted
1

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

raspberry gravatar image

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 ...
(more)
edit flag offensive delete link more

Comments

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

qubit gravatar imagequbit ( 2013-03-13 10:16:45 +0100 )edit

Question Tools

Stats

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

Seen: 1,094 times

Last updated: Jul 16 '12