1.由于应用程序配置不正确,不能启用dll文件;

解决:版本不对,换另一个版本试一下.

2. ERROR [http-8080-Processor25] - Servlet.service() for servlet FileUploaded threw exception

java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

将dll文件复制到tomcat\bin目录下重新启动tomcat5.5

3.使用过程中(将项目发布到Tomcat5下运行时)提示

java.lang.UnsatisfiedLinkError:

Native Library D:\Program Files\Apache Software Foundation\Tomcat 5.5\bin\jacob-1.14.3-x86.dll

already loaded in another classloader

解决:将%Tomcat 5.5%\webapps\XXXX\WEB-INF\lib\下的jacob.jar包剪切到%Tomcat 5.5%\shared\lib目录下(或删除).


五.自己改写WordBean类:

1.改写前你要知道VBA,熟悉怎样用VBA操作word;

2.将VBA操作改到java代码;要知道com.jacob.com.Dispatch可容纳任何VBA中的集合对象;

如:Dispatch paragraphs = Dispatch.get(doc, "Paragraphs").toDispatch(); // 将Paragraphs 集合对象赋给Dispatch对象;

3.使用VBA对象属性:

如:int paragraphCount = Dispatch.get(paragraphs, "Count").getInt(); //调用Dispatch.get()方法获取Paragraphs 集合对象的Count属性;

4.调用VBA对象方法:

在VBA帮助中我们找到Document 对象Close方法是这样声明的:

expression.Close(SaveChanges, OriginalFormat, RouteDocument)

expression 必需。该表达式返回以上的一个对象。

SaveChanges Variant 类型,可选。指定保存文档的操作。可以是下列 WdSaveOptions 常量之一:wdDoNotSaveChanges、wdPromptToSaveChanges 或 wdSaveChanges。

OriginalFormat Variant 类型,可选。指定保存文档的格式。可以是下列 WdOriginalFormat 常量之一:wdOriginalDocumentFormat、wdPromptUser 或 wdWordDocument。

RouteDocument Variant 类型,可选。如果该属性值为 True,则将文档发送给下一个收件人。如果文档没有附加传送名单,则忽略该参数。


因些我们可在WordBean添加一个这样的方法关闭文档:

public void closeDocument(int val) { 


Dispatch doc = Dispatch.call(documents, "Open", docPath).toDispatch(); //doc是Document对象,调用 


Dispatch.call(doc, "Close", new Variant(val)); // val 0不保存修改 -1 保存修改 -2 提示是否保存修改,对应VBA中Document 对象Close方法的SaveChanges参数 


doc = null; 


}



你会注意到Dispatch类重载了很多call方法,这与VBA中方法基本相似有很多参数是缺省的:

你可还会注意到Dispatch还有个invoke方法其实它和call差不多也是调用VBA对象方法的,只参数的形式不同(我目前这样认为)

Dispatch还有很多方法调用都是为配合调用VBA对象的方法,我还没有时间深入的看,等都明白再补上这部分说明;


参考(自己Gooogle一下):

JAVA 深度控制 WORD;

Aspose.Words for Java 发布-操作word的工具

用Java操作Office 2007(http://blog.163.com/peigen_peigen/blog/static/2704780200863082444566/)

Java/Office2007 以往java程序员要访问office文档,往往要借助各种各样的com组件,jni是难以避免的,因为office文档(word、excel、ppt)是二进制存储的。但是在许多系统中都要用到office文档,这个java程序员带来了一定的麻烦。 随着office2007的出现,文档存储支持OpenXML,使得java程序读写office文档不用必须借助第三方控件。以word2007为例,文档存储为*.docx文件,这实际上是一个压缩文件,通过java的ZIPjar包、TAR jar包,都可以访问,可以使用100%纯java代码完成对word2007文件的读取、写入操作。 比较详细的一个例子如下:,有兴趣的可以去参考一下。 另外,office文档操作也有很多其他方法,比如POI、j-Interop等第三方工具包。