• Docx4j替换word


    @SuppressWarnings("serial")
    	public static void main(String[] args) throws Exception {
    		
    		// 模板文件路径
            String templatePath = "/Users/lijun/Downloads/work/房产评估/outFile.doc";
            // 生成的文件路径
            String targetPath = "/Users/lijun/Downloads/work/房产评估/target.docx";
            // 书签名
            String bmImage = "place_image";
            String bmTable = "table_test";
            // 图片路径
            String imagePath = "/Users/lijun/Documents/workspace1/portal_assess/src/main/webapp/static/images/2.jpg";
    
            // 载入模板文件
            WordprocessingMLPackage template = getTemplate(templatePath);
    //        		WordprocessingMLPackage.load(new FileInputStream(templatePath));
            // 提取正文
            MainDocumentPart mainDocumentPart = template.getMainDocumentPart();
            Document wmlDoc = (Document) mainDocumentPart.getJaxbElement();
            Body body = wmlDoc.getBody();
            
            List<Object> texts = getAllElementFromObject(template.getMainDocumentPart(), Text.class);
            //Map<String,String> map = new HashMap<String,String>();
            searchAndReplace(texts, new HashMap<String, String>(){
                {
                    this.put("${project.user}", "李俊");
                    this.put("${project.name}", "蜀山新村2幢202");
                    this.put("${project.no}", "房子No201703780011");
    //                this.put("${one_here_and}", "Firstname");
    //                this.put("${one}", "ChildA");
    //                this.put("${two}", "ChildB");
    //                this.put("${three}", "ChildC");
                }
                @Override
                public String get(Object key) {
                    return super.get(key);
                }
            });
        	List<String[]> tbl = new ArrayList<String[]>();
        	tbl.add(new String[]{"估价对象及可比实例修正项目","估价对象","可比实例A","可比实例B","可比实例c"});
        	tbl.add(new String[]{"建筑面积","95","120","86","96"});
        	tbl.add(new String[]{"楼层","2","1","4","3"});
            replaceTable(template,"${table}",tbl);
            // 提取正文中所有段落
            List<Object> paragraphs = body.getContent();
            // 提取书签并创建书签的游标
            RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
            new TraversalUtil(paragraphs, rt);
            for (CTBookmark bm:rt.getStarts()) {
                 //这儿可以对单个书签进行操作,也可以用一个map对所有的书签进行处理
            	 if (bm.getName().equals(bmImage)){             
            		 insertImageAtBookmark(template,imagePath,bm);
                }else if (bm.getName().equals(bmTable)){ 
    //            	insertTableAtBookmark(template,tbl,bm);
                }
            }
            template.save(new FileOutputStream(targetPath));
    	}
    

      

  • 相关阅读:
    ftp卡死问题
    Windows 10 安装FileZilla Server
    The last packet successfully received from the server was 39,900 milliseconds ago问题解决
    java.sql.SQLException: Could not retrieve transaction read-only status from server 问题解决
    三主机配置 keepalived VIP高可用
    subprocess.Popen在win10下会有异常
    python 使用内置方法读取注册表
    过年有感
    java.security.InvalidKeyException: Illegal key size 解决办法
    Android Studio 检查Top Activity
  • 原文地址:https://www.cnblogs.com/fg-fd/p/7196204.html
Copyright © 2020-2023  润新知