1. 程式人生 > >java:讀取並修改word中的內容並儲存。

java:讀取並修改word中的內容並儲存。

1.讀取word內容

2.修改要修改的內容

3.儲存word

public Map readwriteWord(Map<String, String> map,String gcid,String deptid) {
	//查詢word模板
        BindContractTemplate bindContractTemplate = new BindContractTemplate();
        bindContractTemplate.setGCId(gcid);
        bindContractTemplate.setDeptId(deptid);
        bindContractTemplate = bindContractTemplateService.get(bindContractTemplate);
	//吧伺服器的模板下載到本機中
        String photoUrl = bindContractTemplate.getContractTemplateUrl();
        String fileNames = photoUrl.substring(photoUrl.lastIndexOf("/"));
        String filePath = "/var/xxx/webserver/xxx/contract/";
        boolean flag = saveUrlAs(photoUrl, filePath +fileNames);
        // 讀取word模板
        FileInputStream in = null;
        try {
            in = new FileInputStream(new File(filePath + fileNames));
            //in = new FileInputStream(new File("F:\\1495206705005.doc"));
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        HWPFDocument hdt = null;
        try {
            hdt = new HWPFDocument(in);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        Fields fields = hdt.getFields();
        Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN)
                .iterator();
        while (it.hasNext()) {
            System.out.println(it.next().getType());
        }
        // 讀取word文字內容
        Range range = hdt.getRange();
        // 替換文字內容
        for (Map.Entry<String, String> entry : map.entrySet()) {
            if (entry.getValue() == null) {
                entry.setValue("  ");
            }
            range.replaceText("${" + entry.getKey() + "}", entry.getValue());
//例如:range.replaceText("${辰辰}", entry.getValue());就是用map的value值代替word中的${辰辰} ,${} 作為識別符號,可以改成自己需要的字元,
//用於辨別word中需要修改的內容的位置
        }
        ByteArrayOutputStream ostream = new ByteArrayOutputStream();
        String fileName = "" + System.currentTimeMillis();
        fileName += ".doc";
        FileOutputStream out = null;
        String path = "http://test.fq.pms.efanghang.com/"+fileName;
        String pathout = "/var/fangqian/webserver/qypms_boot_jar/contract/" + fileName;
        //String path = "f:\\"+fileName;
        try {
            out = new FileOutputStream("/var/fangqian/webserver/qypms_boot_jar/contract/" + fileName, true);
            e.printStackTrace();
        }
        try {
            hdt.write(ostream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 輸出位元組流
        try {
            out.write(ostream.toByteArray());
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            ostream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Map mapout=new HashMap();
        mapout.put("path",path);
        mapout.put("pathout",pathout);
        System.out.println("修改word完啦");
        return mapout;
    }