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

标签 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  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) 

最佳答案

试试这个:

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 表示缺少所需的应用程序。

关于java - 在注册表中找不到客户端 ID - OLE 打开 XSLX 文档错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40973852/

相关文章:

java - 静态在此示例程序中如何工作?

java - 如何使用 Java 获取当前打开的窗口/进程的列表?

java - 显示 SWT TableItem 的右键单击菜单?

eclipse - 模拟 eclipse SWT/JFACE 对话框和小部件

java - 无法在 OwnerDrawLabelProvider 中绘制 Composite

java - org.hibernate.Hibernate 枚举常量

java - vertx.createHttpClient().getNow() 不调用处理程序

swt - 未在 ListViewer 上调用 labelprovider getImage

java - 基于选定节点的 TreeViewer 上下文菜单 - SWT

java - 树查看器不会取消选择树项目