2010-07-28 4 views
0

J'ai un script en python utilisant pyuno qui extrait des données de nombreux fichiers Excel.Ouverture de plusieurs documents dans une même fenêtre avec UNO

Mon problème est que pour chaque fichier ouvrir et fermer une fenêtre avec

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

et

file.close(True) 

Est-il possible d'extraire des données des fichiers sans ouvrir une fenêtre du tout? Ou au moins sans ouvrir une nouvelle fenêtre pour chaque fichier?

Répondre

0

Cela ouvre un document sans afficher:

// 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); 
Questions connexes