根据word模版导入word中用户填写的数据
背景
客户有个需求:从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中用户填写的数据相关推荐
- c语言 自动生成word文件,C#根据Word模版生成Word文件
本文实例为大家分享了C#根据Word模版生成Word文的具体代码,供大家参考,具体内容如下 1.指定的word模版 2.生成word类 添加com Microsoft word 11.0 Object ...
- 在ArcGIS中导入excel中的经纬度点数据,但和其它shp数据无法同时显示的问题
在ArcGIS中,将导入的经纬度点数据与其它矢量数据同时显示 文章目录 在ArcGIS中,将导入的经纬度点数据与其它矢量数据同时显示 前言 一.数据说明 二.步骤 1.设置图层属性 2.导入excel ...
- java poi操作word模版 导出word文档(附工具类)
模板格式 合同编号:{ contractNumber},合同序号:{ contractSequence} 买家: { buyerName} 卖家:{ sellerName} 业务员: { salesN ...
- oracle只导入dmp中指定表,oracle 如何导入dmp文件到指定表空间
oracle 如何导入dmp文件到指定表空间 2010年01月14日星期四 13:27 1. 打开工具Oracle SQL Plus 以dba身份登录sys用户 user: sys password: ...
- 如何将excel表格导入matlab,将Excel数据导入MATLAB中的方法
在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.那么下面小编教你怎么将Excel数据导入MATLAB中. 将 ...
- 如何将试卷导入到mysql中,一种基于C#中将Word试题导入数据库实现方法.doc
一种基于C#中将Word试题导入数据库实现方法 一种基于C#中将Word试题导入数据库实现方法 摘要:随着在线考试系统的不断发展,试题库建设问题也逐渐显露出来,如何让用户方便,快捷的录入试题,并能够保 ...
- java word模版填充_[转载]java向word模板中填充数据(总结)
使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区 ...
- java poi读取word中附件_Java POI导入word, 带图片
1.导入文件示例,word中简历表格模板 2.代码示例分两部分,一部分读取图片 /** * 导入word(基本信息,word格式) * @param staffId * @param baseInfo ...
- word 图片导入不翻转_如何在Microsoft Word中翻转图片
word 图片导入不翻转 While Microsoft Word isn't known for its photo-editing abilities, it does have some bas ...
最新文章
- Android—监听器
- [CareerCup] 16.5 Semphore 信号旗
- Android系统编译过程中常见问题汇总(1)
- java的继承_java中的继承(一)
- boost::mp11::mp_copy_if相关用法的测试程序
- 五种I/O模型的性能分析
- dos命令行说adb不是系统命令
- SAP UI5 应用开发教程的学习目录
- 流水灯verilog实验原理_IC设计实例解析之“流水线技术”
- vue 插件 滑块验证_vue滑块验证,原理,demo
- 我的网站之一(搭建网站架构)
- Python编程实践—打印 九九乘法表的几种方法
- 猎豹网校c语言,[猎豹网校]数据结构与算法_C语言
- Excel查询两列值的差异 -- VLOOPUP
- html5控制视频暂停,使用jQuery控制HTML5视频播放/暂停
- BCNF范式、第四范式和第五范式
- littleVGL开发(11):任务系统(task)
- 苹果vpn是下一件大事
- 新年计划(2018)
- 利用批处理脚本批量删除电脑上的空文件夹
热门文章
- Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
- 深入kubernetes之Pod——一pod多容器
- 计算机维修实训报告模板,[计算机维修实验报告模板.doc
- linux rpm找不到命令_linux书后习题(4-9章不全) - lijinli
- php 数组按个数分组,如何在PHP中基于内部数组键对数组进行分组?
- Visual Studio 2019报4996错误的解决办法
- tp摄像头的默认地址_tp-link怎么设置无线桥接 tp-link设置无线桥接方法【图文】...
- 基于PCA和贝叶斯决策对CIFAR-10数据图像分类
- oracle触发器记录所有dml,Oracle DML类型触发器
- 唤起那些年你对IDL的记忆(一)