java利用jacob导入word表格

      因为项目的需要,做了一个导入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的工作已经进行了一半了,用武之地已不多。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值