zoukankan      html  css  js  c++  java
  • 根据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('	');
                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中的高级功能完善的解决了导入数据的格式变化问题。百度谷歌绝对找不到,绝对原创。

  • 相关阅读:
    SystemTap----常用变量、宏、函数和技巧
    RPM制作
    percona-MYSQLGUI监控
    Rsyslog配置文件详解
    理解 Linux 网络栈(1):Linux 网络协议栈简单总结 图
    tcp-backlog配置
    Clumsy logo差网络环境模拟工具 Clumsy
    Android Studio 配置模拟器AVD存放路径(默认在c盘,解决c盘空间不够问题)
    Android Studio 导入的项目编码错误问题
    21分钟 MySQL 入门教程
  • 原文地址:https://www.cnblogs.com/wolf12/p/8457880.html
Copyright © 2011-2022 走看看