从Java获取打开的Excel文件(工作簿)列表

从Java获取打开的Excel文件(工作簿)列表,java,excel,com,jacob,Java,Excel,Com,Jacob,我在将MS Excel集成到java应用程序中时遇到了一个问题。我使用Jacob通过comapi与Excel对话,这通常工作正常。可以从应用程序打开XLS文件,并正确存储更改 但后来我注意到,当Excel已经打开,并且内存中至少有一个工作簿已更改但尚未保存时,我的代码就会出现错误。像这样的简单语句失败了,但出现了一个异常: excel.getProperty("Workbooks"); 我很少使用工作簿集合:只是添加一个新工作簿或计算它的大小。这真的应该会起作用 我错过了什么吗?我得到了一个C

我在将MS Excel集成到java应用程序中时遇到了一个问题。我使用Jacob通过comapi与Excel对话,这通常工作正常。可以从应用程序打开XLS文件,并正确存储更改

但后来我注意到,当Excel已经打开,并且内存中至少有一个工作簿已更改但尚未保存时,我的代码就会出现错误。像这样的简单语句失败了,但出现了一个异常:

excel.getProperty("Workbooks");
我很少使用工作簿集合:只是添加一个新工作簿或计算它的大小。这真的应该会起作用


我错过了什么吗?

我得到了一个ComFailException:无法将名称映射到dispid:Workbooks事实上这不是未保存的更改的问题,而是当前打开(用于编辑)的单元格的问题。如果我更改一个单元格的值并将光标保持在那里,它将失败。但是,如果我将光标移动到另一个单元格或只按return键,它将再次工作。看来我所需要的只是一个关闭开放细胞的命令或类似的东西。今天我学到了另一件事。只要在excel中编辑单元格,就可以防止编写脚本。因此,没有直接的方法中止编辑,因为没有方法打开另一个文件等,但应该可以通过某种方式向应用程序发送ESC键。在excel应用程序对象本身上使用SendKeys方法时,这不起作用。有人不知怎么做到了吗?我试着用一个小VB脚本复制这个,但没有成功。这可能是一个java/jacob特定的问题。我一直在努力。