views:

16

answers:

1

I have script in python using pyuno that extracts data from many excel files.

My problem is that for every file I open and close a window with

url = unohelper.systemPathToFileUrl(os.path.abspath(file_name))
file = desktop.loadComponentFromURL(url, "_blank", 0, () )

and

file.close(True)

Is there any way to extract data from the files without opening a window at all? Or at least without opening a new window for each file?

A: 

This Open a Document without displaying. Greets Seboeh

// Call the bootstrap to get the Component context
com.sun.star.uno.XComponentContext oComponentContext = null;
try
{
    String oooExeFolder = "C:/Program Files/OpenOffice.org 3/program/";
    oComponentContext = BootstrapSocketConnector.bootstrap(oooExeFolder);
}
catch(com.sun.star.comp.helper.BootstrapException ex)
{
    System.out.println(ex.getMessage());
}

if(oComponentContext != null)
{

    com.sun.star.lang.XComponent oComponent;
    com.sun.star.sheet.XSpreadsheetDocument oSpreadDocument;
    com.sun.star.frame.XComponentLoader oComponentLoader;
    try
    {
        com.sun.star.lang.XComponent oComponent;
            // Get the service manager
        com.sun.star.lang.XMultiComponentFactory oMultiComponentFactory =
                oComponentContext.getServiceManager();
            // Create a new desktop instance
            Object oDesktop =
                oMultiComponentFactory.createInstanceWithContext(
                 "com.sun.star.frame.Desktop", oComponentContext);
             // Create a new component loader within our desktop
            oComponentLoader  =
                (com.sun.star.frame.XComponentLoader)
                com.sun.star.uno.UnoRuntime.queryInterface(
                com.sun.star.frame.XComponentLoader.class,
                                  oDesktop);
            /// Read the created file
            com.sun.star.beans.PropertyValue[] property = new com.sun.star.beans.PropertyValue[2];
            property[0] = new com.sun.star.beans.PropertyValue();
            property[0].Name = new String("ReadOnly");
            property[0].Value = new Boolean(true);
            property[1] = new com.sun.star.beans.PropertyValue();
            property[1].Name = new String("Hidden");
            property[1].Value = new Boolean(true);
            oComponent =
                oComponentLoader.loadComponentFromURL(
                        "file:///c:/test/sheetdoc.ods",
                        // "private:factory/swriter", //Blank document
                        "_default",                   // new frame
                        0,                      // no search flags
                        // read only
                        property);
            // Get the spread sheet
            oSpreadDocument =
                (com.sun.star.sheet.XSpreadsheetDocument)
                com.sun.star.uno.UnoRuntime.queryInterface(
                        com.sun.star.sheet.XSpreadsheetDocument.class, oComponent);
    }
catch(Exception  ex)
{
    System.out.println("An exception occurs at opening of document: "+ex.getMessage());
    return;
}

 } // end of if
 System.exit(0);
Seboeh