2010-07-28 2 views
0

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

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

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

и

file.close(True) 

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

ответ

0

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

// 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); 
Смежные вопросы