Java 在注册表中找不到客户端id-OLE打开XSLX文档错误

Java 在注册表中找不到客户端id-OLE打开XSLX文档错误,java,swt,jface,ole,Java,Swt,Jface,Ole,当我想通过SWT-OleClient显示EXCEL文件时,我得到以下错误: final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); File openFile = new File("D:\\eDefterKutuphanesi\\eDefter\\excel.xlsx"); OleFrame frame = new OleFrame(shell, SWT.NONE); OleClientSite s

当我想通过SWT-OleClient显示EXCEL文件时,我得到以下错误:

final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
File openFile = new File("D:\\eDefterKutuphanesi\\eDefter\\excel.xlsx");
OleFrame frame = new OleFrame(shell, SWT.NONE);
OleClientSite  site2 = new OleClientSite(frame,SWT.NONE,"D:\\test.xlsx");   
错误消息:

Exception in thread "main" org.eclipse.swt.SWTException: Class ID not found in registry 
   at org.eclipse.swt.ole.win32.OLE.error(OLE.java:317) 
   at org.eclipse.swt.ole.win32.OLE.error(OLE.java:283) 
   at org.eclipse.swt.ole.win32.OleClientSite.<init>(OleClientSite.java:226) 
   at infina.accounting.reports.views.ExcelDonusturView.main(ExcelDonusturView.java:438) 

线程“main”org.eclipse.swt.swt异常异常:在注册表中找不到类ID
位于org.eclipse.swt.ole.win32.ole.error(ole.java:317)
位于org.eclipse.swt.ole.win32.ole.error(ole.java:283)
在org.eclipse.swt.ole.win32.OleClientSite上。(OleClientSite.java:226)
位于infina.accounting.reports.views.ExcelDonusturView.main(ExcelDonusturView.java:438)
试试这个:

final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
OleFrame frame = new OleFrame(shell, SWT.NONE);
OleClientSite site = new OleClientSite(frame, SWT.NONE, "Excel.Sheet", new File("D:\\test.xlsx"));
您正在将
“D:\\test.xlsx”
作为第三个参数传递,该参数应该是
progId
,对于Excel,它是
“Excel.Sheet”

还要确保您的计算机上安装了Microsoft Excel

在注册表中找不到类ID
表示缺少所需的应用程序。

请尝试以下操作:

final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
OleFrame frame = new OleFrame(shell, SWT.NONE);
OleClientSite site = new OleClientSite(frame, SWT.NONE, "Excel.Sheet", new File("D:\\test.xlsx"));
您正在将
“D:\\test.xlsx”
作为第三个参数传递,该参数应该是
progId
,对于Excel,它是
“Excel.Sheet”

还要确保您的计算机上安装了Microsoft Excel

在注册表中找不到类ID
表示缺少所需的应用程序。

相同的错误。它仍然在线程“main”org.eclipse.swt.swt中显示异常异常异常:在注册表中找不到类ID您在运行程序的计算机上安装了Excel吗?我有LibreOffice flavio。这可能是问题所在?就连我也在想,安装Microsoft Office可以防止这个错误吗?是的,可能是这样。LibreOffice的OLE支持与Excel不同。我认为它支持一些OLE/COM接口(我在它的前身StarOffice上使用过),但我怀疑您是否可以在OleClient中使用它,并且您应该为LibreOffice使用正确的ProgID。“在注册表中找不到类ID”是指找不到所需的应用程序,因此您需要Microsoft Office。您可以搜索LibreOffice的ProgId并传递它,而不是
“Excel.Sheet”
。同样的错误是Flavio。它仍然在线程“main”org.eclipse.swt.swt中显示异常异常异常:在注册表中找不到类ID您在运行程序的计算机上安装了Excel吗?我有LibreOffice flavio。这可能是问题所在?就连我也在想,安装Microsoft Office可以防止这个错误吗?是的,可能是这样。LibreOffice的OLE支持与Excel不同。我认为它支持一些OLE/COM接口(我在它的前身StarOffice上使用过),但我怀疑您是否可以在OleClient中使用它,并且您应该为LibreOffice使用正确的ProgID。“在注册表中找不到类ID”是指找不到所需的应用程序,因此您需要Microsoft Office。您可以搜索LibreOffice的ProgId并传递它,而不是
“Excel.Sheet”