Открытие нескольких документов в одном окне с UNO - PullRequest
0 голосов
/ 28 июля 2010

У меня есть скрипт на python, использующий pyuno, который извлекает данные из многих файлов Excel.

Моя проблема в том, что для каждого файла я открываю и закрываю окно с

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

и

file.close(True)

Есть ли способ извлечь данные из файлов безоткрывать окно вообще?Или хотя бы без открытия нового окна для каждого файла?

1 Ответ

0 голосов
/ 16 августа 2010

Это открывает документ без отображения:

// 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);
...