背景

客户有个需求:从word格式文档中读项目关键信息到数据库中,如:第一个表格中的联系人,项目名之类的信息,word中的格式不是固定的,可以会有些改动。

分析

方案1:读取第一个表格,然后再读取表格中的固定行列。缺点:位置如果改变,代码改动比较大。

方案2:利用word中的域功能,域特点可以隐藏起来,不影响用户的信息录入。域格式为:$电话$。就可以用正则去获取域位置的信息。缺点:必需提供模版让用户下载再填写。

代码

/*** 正则表达式匹配两个指定字符串中间的内容* @param soap* @return*/public static List<String> getSubUtil(String soap, String rgex){List<String> list = new ArrayList<String>();Pattern pattern = Pattern.compile(rgex);// 匹配的模式Matcher m = pattern.matcher(soap);while (m.find()) {int i = 1;String group = m.group(i);int j = group.lastIndexOf('\t');if(j>-1){group=group.substring(j+1);}list.add(group);i++;}return list;}public static String getSubUtilSimple(String soap,String rgex){Pattern pattern = Pattern.compile(rgex);// 匹配的模式Matcher m = pattern.matcher(soap);while(m.find()){return m.group(1);}return "";}/*** 转存到map结构中* @param text* @return*/public static Map convertKeyToMap(String text){String rgex = "\\$(.*?)\\$";List<String> subUtil = RgexUtils.getSubUtil(text, rgex);Map map=new HashMap();for (String s : subUtil) {String rgex1 = "\\s(.*?)\\$"+s+"\\$";String s1 = RgexUtils.getSubUtil(text, rgex1).get(0);map.put(s,s1);}return map;}

效果

总结

本方案利用了word中的高级功能完善的解决了导入数据的格式变化问题。百度谷歌绝对找不到,绝对原创。

转载于:https://www.cnblogs.com/wolf12/p/8457880.html

根据word模版导入word中用户填写的数据相关推荐

  1. c语言 自动生成word文件,C#根据Word模版生成Word文件

    本文实例为大家分享了C#根据Word模版生成Word文的具体代码,供大家参考,具体内容如下 1.指定的word模版 2.生成word类 添加com Microsoft word 11.0 Object ...

  2. 在ArcGIS中导入excel中的经纬度点数据,但和其它shp数据无法同时显示的问题

    在ArcGIS中,将导入的经纬度点数据与其它矢量数据同时显示 文章目录 在ArcGIS中,将导入的经纬度点数据与其它矢量数据同时显示 前言 一.数据说明 二.步骤 1.设置图层属性 2.导入excel ...

  3. java poi操作word模版 导出word文档(附工具类)

    模板格式 合同编号:{ contractNumber},合同序号:{ contractSequence} 买家: { buyerName} 卖家:{ sellerName} 业务员: { salesN ...

  4. oracle只导入dmp中指定表,oracle 如何导入dmp文件到指定表空间

    oracle 如何导入dmp文件到指定表空间 2010年01月14日星期四 13:27 1. 打开工具Oracle SQL Plus 以dba身份登录sys用户 user: sys password: ...

  5. 如何将excel表格导入matlab,将Excel数据导入MATLAB中的方法

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.那么下面小编教你怎么将Excel数据导入MATLAB中. 将 ...

  6. 如何将试卷导入到mysql中,一种基于C#中将Word试题导入数据库实现方法.doc

    一种基于C#中将Word试题导入数据库实现方法 一种基于C#中将Word试题导入数据库实现方法 摘要:随着在线考试系统的不断发展,试题库建设问题也逐渐显露出来,如何让用户方便,快捷的录入试题,并能够保 ...

  7. java word模版填充_[转载]java向word模板中填充数据(总结)

    使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区 ...

  8. java poi读取word中附件_Java POI导入word, 带图片

    1.导入文件示例,word中简历表格模板 2.代码示例分两部分,一部分读取图片 /** * 导入word(基本信息,word格式) * @param staffId * @param baseInfo ...

  9. word 图片导入不翻转_如何在Microsoft Word中翻转图片

    word 图片导入不翻转 While Microsoft Word isn't known for its photo-editing abilities, it does have some bas ...

最新文章

  1. Android—监听器
  2. [CareerCup] 16.5 Semphore 信号旗
  3. Android系统编译过程中常见问题汇总(1)
  4. java的继承_java中的继承(一)
  5. boost::mp11::mp_copy_if相关用法的测试程序
  6. 五种I/O模型的性能分析
  7. dos命令行说adb不是系统命令
  8. SAP UI5 应用开发教程的学习目录
  9. 流水灯verilog实验原理_IC设计实例解析之“流水线技术”
  10. vue 插件 滑块验证_vue滑块验证,原理,demo
  11. 我的网站之一(搭建网站架构)
  12. Python编程实践—打印 九九乘法表的几种方法
  13. 猎豹网校c语言,[猎豹网校]数据结构与算法_C语言
  14. Excel查询两列值的差异 -- VLOOPUP
  15. html5控制视频暂停,使用jQuery控制HTML5视频播放/暂停
  16. BCNF范式、第四范式和第五范式
  17. littleVGL开发(11):任务系统(task)
  18. 苹果vpn是下一件大事
  19. 新年计划(2018)
  20. 利用批处理脚本批量删除电脑上的空文件夹

热门文章

  1. Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
  2. 深入kubernetes之Pod——一pod多容器
  3. 计算机维修实训报告模板,[计算机维修实验报告模板.doc
  4. linux rpm找不到命令_linux书后习题(4-9章不全) - lijinli
  5. php 数组按个数分组,如何在PHP中基于内部数组键对数组进行分组?
  6. Visual Studio 2019报4996错误的解决办法
  7. tp摄像头的默认地址_tp-link怎么设置无线桥接 tp-link设置无线桥接方法【图文】...
  8. 基于PCA和贝叶斯决策对CIFAR-10数据图像分类
  9. oracle触发器记录所有dml,Oracle DML类型触发器
  10. 唤起那些年你对IDL的记忆(一)