我在python中使用pyuno从大量excel文件中提取数据。
我的问题是,我打开每个文件并用
关闭一个窗口url = unohelper.systemPathToFileUrl(os.path.abspath(file_name))
file = desktop.loadComponentFromURL(url, "_blank", 0, () )
和
file.close(True)
有没有办法从文件中提取数据而根本不打开窗口?或者至少没有为每个文件打开一个新窗口?
答案 0 :(得分: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);