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));
	}

  

转载于:https://www.cnblogs.com/fg-fd/p/7196204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值