因为项目的需要,做了一个导入word的模块,大致思路如下,利用jacob来解析word,首先定义一个xml文件,用于描述单元格的位置、对应的属性以及数据校验规则等等,一般来说当表格的内容发生变化或者规则变化时只需要修改配置文件就可以了。
做完后,测试了很多次,觉得各种问题都考虑全面了,将错误提示也做得比较完整,但是上线后还是遇到了各种各样的问题。在部署的一天,总是导入不成功,jacob提示的错误也相当有限,根本找不出有价值的信息。第二天有个同事说测试服务器装的word为2000,版本问题?后来装了2003,好了,果然是word版本问题。
到了正式上线后,又出现了各种各样的问题,当然大多都是用户提交的文档不符合规范造成,大致有如下情况:
1 要求填写数字的地方填写了带圈圈的数字(跌倒!这难道也是数字?),甚至有个人直接在里面打了个“对勾”,硬是半天没弄懂他的用意。
2 填写数字的地方还画蛇添足的加了个单位,如“人”。
3 以前要求填数字的地方,现在要求可以填英文。
4 单位名称居然有超过30个汉字的。
5 很多人都填写了重复的信息。
6 用全角输入的字符,如字母、数字、空格等等。
7 最头疼的是word里面有不可见的字符,记得有一项的最大长度限制在20,用肉眼看那个word里面的长度为13,但程序总是报超过长度,真是汗了半天,后来把字符删除得只剩下3个后再导入,发现在系统里面出现了"?",所以“眼见为实”是不是得改了,眼见不一定为实^o^.
我的解决办法如下:
1 带圈的数字和阿拉伯数字的asc码相差一个固定数,通过判断asc码进行转换,对于要求填数字的地方填写了其它字符的一律用正则表达式过滤掉。
2 数据类型变化的和长度变化的修改配置文件即可。
3 对于某些重复信息,(如一个单位有可能有重名的,出现相同的名字,到底是重复还是重名?这不是程序判断得了的),只能手工清除了。
4 全角也可以通过asc码进行转换。
5 不可见字符,这是一个Latin字符中不可见的东东,通过程序解析发现asc码为160,在家里测试了一下,通过asc码转换可以自动过滤掉,只可惜导入word的工作已经进行了一半了,用武之地已不多。
分享到:
相关推荐
3. **添加水印**:利用Jacob提供的接口,创建并设置图片作为水印,然后将其插入Word文档。 ```java // 假设已有一个Image对象image代表你的水印图片 Dispatch insertImage = Dispatch.get(doc, "InlineShapes")....
最近因项目开发的需要,整理了一份用JAVA导出WORD文档,其部署步骤如下: 1、将jacob-1.14.3-x86.dll放在服务器的系统盘(或运行本机的系统):\WINDOWS\system32目录下。 2、将jacob-1.14.3-x86.dll放在JDK 的 bin ...
在Java中使用Jacob操作Word表格,你需要创建一个`ActiveXComponent`对象来代表Word应用程序实例。例如: ```java import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import ...
java项目, 直接导入eclipse里面或者myeclipse里面就可以运行. 里面有readMe.txt文件,有详细说明. 通过jacob插件,通过word模板自动填充相应的数据,并且产生文件,为了解决有的tomcat下会乱码, 生成完成之后会转码一下,...
了解以上基本步骤后,你便可以利用Jacob进行更复杂的Word操作,比如处理表格、插入图片、应用样式等。不过,需要注意的是,由于Jacob依赖于Windows的COM机制,所以它只适用于Windows环境,不适用于Linux或Mac OS等...
Jacob是一个Java库,它提供了对Microsoft Office应用程序如Word和Excel的COM自动化接口,使得Java开发者可以利用这些Office工具的功能,例如创建、修改文档、处理表格和图表等。在这个主题下,我们将深入探讨如何...
Jacob是一个Java库,它提供了对Microsoft Office应用程序,如Word、Excel和PowerPoint的自动化支持。这个库通过COM接口与Office应用程序交互,使得Java开发者能够直接在Java程序中创建、编辑和控制Office文档。在这...
在Java中操作Word和Excel,通常是为了自动化处理文档、报表生成或者数据导入导出等任务。Jacob通过COM自动化接口,可以实现以下功能: 1. **创建和编辑Word文档**:使用Jacob,你可以创建新的Word文档,添加文本、...
### Word导入导出技术详解——基于Java与SSH #### 一、引言 在现代办公环境中,Word文档因其丰富的编辑功能和广泛的兼容性而成为重要的文档格式之一。无论是企业内部还是跨组织之间的文档交流,Word文档都扮演着至...
这个jar文件包含了Jacob库的Java类和方法,通过这些类和方法,Java应用程序可以轻松地与Windows上的COM对象进行交互,如打开Word文档、Excel电子表格或者执行其他与Office相关的操作。 `jacob-1.14.3-x64.dll` 是...
为了使用Jacob,开发者需要将相应的DLL文件添加到系统的PATH环境变量中,并在Java代码中导入Jacob的jar包,然后就可以通过Java代码调用COM对象来操作Word了。例如: ```java import ...
- **自动化Office文档处理**:使用Jacob,你可以编写Java程序来创建、编辑和保存Word文档、Excel电子表格或PowerPoint演示文稿。 - **系统管理**:可以通过Jacob访问Windows注册表,或者控制打印机、网络共享等系统...
2. **导入库**: 在Java代码中,你需要导入相关的Jacob类,如`com.jacob.activeX.ActiveXComponent`和`com.jacob.com.Dispatch`。 3. **初始化对象**: 创建`ActiveXComponent`对象,以连接到Word或Excel应用实例。 ...
- 数据导入导出:例如,从数据库中提取数据并格式化为Word文档,或者将Word文档中的表格数据导入到数据库。 - 文档批处理:例如,批量更改文档的页眉、页脚、样式等。 **标签:“源码 工具”**: - **源码**:...
7. **示例应用**:一个常见的Jacob应用场景是自动化处理Microsoft Office文档,例如通过Java代码自动生成Word报告、读取Excel表格数据或者控制PowerPoint演示文稿。 8. **注意事项**:使用Jacob时需要注意,由于它...
1. **配置**:在项目中导入JACOB的jar文件,并设置系统属性,比如`java.library.path`,指向JACOB的动态链接库(dll)文件,以便Java能够正确加载。 2. **安全性**:由于JACOB涉及本地方法调用,因此在一些安全沙箱...
Jacob项目始于2003年,它通过Java Native Interface (JNI) 实现了Java和COM之间的桥梁,使得Java开发者能够利用COM对象,如Microsoft Office的Word、Excel等,进行各种操作。这个项目的源码开放,对于开发者来说是一...
Jacob库是Java应用程序的一个实用工具,它为Java开发者提供了一个接口来调用Windows API,特别是与Microsoft Office组件交互的能力,如Word、Excel和PowerPoint。这个压缩包包含了Jacob从版本1.12到1.19的所有版本,...
在Java程序中,我们导入必要的POI库,然后使用`HWPFDocument`类来读取一个Word文档。以下是一个简单的示例: ```java import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Range; ...