I'm using JACOB to do COM calls to PowerPoint and other Office applications from Java. On a particular Windows 7 box I'm getting the following message quite often, but not always:
Source: Microsoft Office PowerPoint 2007
Description: PowerPoint could not open the file.
From excel I get:
ERROR - Invoke of: Open
Source: Microsoft Office Excel
Description: Microsoft Office Excel cannot access the file 'c:\marchena\marchena10\work\marchena\batch_58288\input\content_1.xlsx'. There are several possible reasons:
? The file name or path does not exist.
? The file is being used by another program.
? The workbook you are trying to save has the same name as a currently open workbook.
The Word error is just:
VariantChangeType failed
The following is what I'm running, the error comes from the last line.
ComThread.InitSTA();
slideApp = new ActiveXComponent("PowerPoint.Application");
Dispatch presentations = slideApp.getProperty("Presentations").toDispatch();
Dispatch presentation = Dispatch.call(presentations, "Open", inputFile.getAbsolutePath(),
MsoTriState.msoTrue.getInteger(), // ReadOnly
MsoTriState.msoFalse.getInteger(), // Untitled The Untitled parameter is used to create a copy of the presentation.
MsoTriState.msoFalse.getInteger() // WithWindow
).toDispatch();
I've tried putting a breakpoint just before doing the Open call and the file is there, and I can actually open it with PowerPoint in the GUI but when I step the exception is thrown.
The annoying thing about this issue is that it seems to happen continuously to begin with, but after poking at it for a while (rerunning the same code), it eventually completes successfully, and after that never reoccurs.
Further research I've found this only happens with to .ppt, .doc and .xls files, not .pptx, .docx and .xlsx. And as far as I can tell it's not file system related (I've swapped out the mechanism that copies the files and tried putting the files on a different file system).
I've just noticed that this only happens when the Java application is running as a service, not when I runcatalina.bat start
from command line.
分享到:
相关推荐
Java中的Jacob库是一个Java到COM桥接库,它允许Java应用程序与COM组件进行交互。在这个特定的情况下,Jacob被用来调用打印机来打印Word文档。这个过程涉及到几个关键的知识点: 1. **Jacob库**:Jacob全称为Java ...
Java Jacob调用AutoCAD读取文件是一种常见的技术实践,它允许开发者通过Java程序与AutoCAD进行交互,实现对DWG或DXF等AutoCAD文件的读取操作。Jacob(Java和COM的桥梁)是一个Java库,它使得Java应用程序能够直接...
Java Jacob 是一个强大的Java到COM桥接库,它允许Java应用程序与Microsoft Windows平台上的COM组件进行交互。在本例中,我们关注的是使用Jacob来实现文字转语音(TTS)的功能,这在各种应用场景中非常有用,比如读取...
java Jacob完美实现word添加图片水印(内附源码及jar包)。 公司最近让搞Word文档添加水印,所有下载的文档需要添加公司印章,搞了好多天才实现,利用Jacob完美实现word添加图片水印(注意需要把dll文件放到jdk的bin...
java jacob.jar包用于实现一个Iweboffice控件的包,可以说是非常有用的java 数据包
标题《java Jacob 解析visio》中所蕴含的知识点涉及到如何使用Java语言借助Jacob库来解析Microsoft Visio文档。Visio是微软公司推出的一款绘图软件,广泛用于绘制流程图、网络图等各类图形。由于Visio文档可以保存为...
Java 使用 Jacob 库操作 Word 文档 Java Jacob 库是 Java 语言中的一种库,主要用于与其他应用程序交互,例如 Microsoft Office。通过使用 Jacob 库,可以在 Java 中操作 Word 文档,进行读写操作。 在以下的代码...
4. **语音合成(Text-to-Speech, TTS)**:在Java中,我们可以通过Jacob调用`SpVoice.Speak()`方法,传入需要合成的文本字符串,让系统语音引擎将其读出来。还可以设置一些参数,如语速、音调等,以定制合成效果。 ...
- 在 Java 项目中引入 Jacob 库,通常需要将 `jacob-x.x.x.dll` 文件放在系统的 PATH 环境变量下或者项目的类路径中。 - 添加 Jacob 的 JAR 文件到项目的类路径,例如 `jacob.jar`。 2. **Word 转换** - 使用 `...
### Java操作Word:Jacob(方法解析+环境配置) #### Jacob简介 Jacob是一个开源的Java-COM桥接工具,它允许Java程序与Windows平台上的COM组件进行交互。这意味着开发者可以通过Java来控制诸如Microsoft Word、...
将`jacob-x86.dll`或`jacob-x64.dll`(根据你的Java运行环境选择)添加到系统的PATH环境变量中,并将Jacob的jar文件(如`jacob.jar`)添加到项目的类路径中。 2. **创建COM对象**:在Java代码中,你可以使用Jacob的...
1. **添加JACOB库**:首先,你需要将JACOB的jar文件添加到Java项目的类路径中。这通常在IDE(如Eclipse或IntelliJ IDEA)中通过配置构建路径完成。 2. **定义COM接口**:在Java中,你需要为C++ COM组件中的接口创建...
Java中的Jacob库是一个非常有用的工具,它允许Java应用程序与Microsoft Office进行交互,包括Word、Excel和PowerPoint等。Jacob库的全称为Java COM Bridge,它通过COM(Component Object Model)接口实现了Java与...
读取word文件的内容,并将内容返回为String类型!
Jacob库为Java开发者提供了一个与Microsoft Office交互的解决方案,允许在Java应用程序中操纵Word文档。Jacob库实际上是Java和COM(Component Object Model)之间的桥梁,使得Java能够调用Windows平台上的Office API...
在IT行业中,Jacob库是一个非常重要的工具,尤其对于Java开发者来说。Jacob全称为"JavaCOM Bridge",它是一个Java到COM(Component Object Model)桥接器,允许Java应用程序调用微软Windows上的COM组件,实现与...
接下来,为了能够在Java应用中使用Jacob,你需要确保系统路径中包含了`jacob.dll`。这个动态链接库文件实现了Java层与COM层的桥接,使得Java能够调用COM组件。通常,`jacob.dll`需要放在Java的系统库目录下,或者在...
Put the appropriate DLL ...jacob for 32 bit windows is located in /x86. jacob for 64 bit windows is located in /64. jacob.jar包引入到项目里 64位系统的就用jacob-1.20-x64的 32位系统的就用jacob-1.20-x86的
总结,"jacob乱码原因解释"涉及到的关键知识点包括:文件编码理解,Java I/O操作,Jacob API的正确使用,Office文档元数据处理,字符集兼容性,以及潜在的兼容性问题。理解和解决这些问题对于顺利进行Office到HTML的...
本教程将详细介绍如何使用Java结合Jacob库将Microsoft Word文档转换为PDF格式,确保转换后的文件保持原格式的完美性。Jacob是一个Java到COM桥接库,允许Java应用程序访问COM组件,如Microsoft Office。 首先,我们...