yuedefeng 6 lat temu
rodzic
commit
a13f3658f1

+ 16 - 0
pom.xml

@@ -379,6 +379,22 @@
             <artifactId>aspose-cells</artifactId>
             <version>8.5.2</version>
         </dependency>
+        <!-- 操作word -->
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.4.2</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
 
     </dependencies>
 

+ 58 - 0
src/main/java/com/common/workflow/service/util/WordTemplate.java

@@ -0,0 +1,58 @@
+package com.common.workflow.service.util;
+
+import com.deepoove.poi.XWPFTemplate;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by gyue on 2019-03-18.
+ */
+public class WordTemplate {
+    /**
+     * 导出word
+     * @return
+     * @throws Exception
+     */
+    public XWPFTemplate exportWordTemplate (Map<String, Object> datas, String templateUrl) throws Exception {
+        XWPFTemplate template = XWPFTemplate.compile(templateUrl).render(datas);
+        return template;
+    }
+
+    public Map<String, String> objectToMap(Object obj) throws IllegalAccessException {
+        Map<String, String> map = new HashMap<>();
+        Class<?> clazz = obj.getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            field.setAccessible(true);
+            String fieldName = field.getName();
+            String value = null;
+            if(field.get(obj) != null) {
+                value = field.get(obj).toString();
+            } else {
+                value = "";
+            }
+
+            map.put(fieldName, value);
+        }
+        return map;
+    }
+
+    public Map<String, Object> objectToMapValueObject(Object obj) throws IllegalAccessException {
+        Map<String, Object> map = new HashMap<>();
+        Class<?> clazz = obj.getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            field.setAccessible(true);
+            String fieldName = field.getName();
+            Object value = null;
+            if(field.get(obj) != null) {
+                value = field.get(obj);
+            } else {
+                value = "";
+            }
+
+            map.put(fieldName, value);
+        }
+        return map;
+    }
+}

+ 47 - 0
src/main/java/com/common/workflow/web/rest/WordResource.java

@@ -0,0 +1,47 @@
+package com.common.workflow.web.rest;
+
+import com.common.workflow.service.util.WordTemplate;
+import com.common.workflow.web.rest.vm.WordTemplateVM;
+import com.deepoove.poi.XWPFTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.OutputStream;
+
+
+/**
+ * Created by gyue on 2019-03-18.
+ */
+@RestController
+@RequestMapping("/api/word")
+public class WordResource {
+    private final Logger log = LoggerFactory.getLogger(WordResource.class);
+
+    public WordResource() {
+    }
+
+    @PostMapping("/fill-word")
+    public void fillWordTemplate(@Valid @RequestBody WordTemplateVM wordTemplateVM, HttpServletResponse response) throws Exception {
+        response.reset();
+        response.setContentType("multipart/form-data");//;charset=utf-8
+        response.setHeader("content-disposition", "attachment;filename=details12.docx");
+        response.setHeader("Pragma","No-cache");
+        response.setHeader ( "Cache-Control", "no-store");
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        OutputStream outputStream = response.getOutputStream();
+        WordTemplate wordTemplate = new WordTemplate();
+        XWPFTemplate template = wordTemplate.exportWordTemplate(wordTemplateVM.getDatas(), wordTemplateVM.getTemplateUrl());
+        template.write(outputStream);
+        outputStream.flush();
+        outputStream.close();
+        template.close();
+    }
+
+}

+ 30 - 0
src/main/java/com/common/workflow/web/rest/vm/WordTemplateVM.java

@@ -0,0 +1,30 @@
+package com.common.workflow.web.rest.vm;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by gyue on 2019-03-18.
+ */
+public class WordTemplateVM {
+
+    private Map<String, Object> datas = new HashMap<>();
+    private String templateUrl;
+
+
+    public Map<String, Object> getDatas() {
+        return datas;
+    }
+
+    public void setDatas(Map<String, Object> datas) {
+        this.datas = datas;
+    }
+
+    public String getTemplateUrl() {
+        return templateUrl;
+    }
+
+    public void setTemplateUrl(String templateUrl) {
+        this.templateUrl = templateUrl;
+    }
+}