Java通过ftl模板导出word最详细教程

x33g5p2x  于2022-05-24 转载在 Java  
字(93.8k)|赞(0)|评价(0)|浏览(322)

首先用office建一个word文档
参数写自己查询出来的字段,我在这里房里图片是方便找到位置替换为64位编码

模板创建好之后,另存为Word 2003 XML文档(*.xml) 存储为别的可能会报错,我只用这一种
存储为xml之后千万不要用word打开,最好用notpad++打开,复制里面的数据到格式化xml工具在线格式化工具格式化一下(注:该工具有弊端,会把定义的参数打散,需要自己手动修改一下)
比如这里我定义的是${about},他给分开,只需要删除多余的<w:r>标签即可

修改后

图片导出的只需要把我的那些数据复制替换一下就可以了,记住自己逻辑里面写的集合名称就ok了,
详情点击下面的标题
templates
找到我的<#list>判断
1175-1232行

里面的参数都是和逻辑处理那边对应的
导出后截图

application.yml

spring:
  profiles:
    active: dev
  servlet:
    multipart:
      max-file-size: 102400MB
      max-request-size: 102400MB
mybatis-plus:
  configuration:
    # 不打印sql
#    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
    # 打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # map集合值为null时也返回
    call-setters-on-nulls: true

multipart:
  enabled: true
  max-file-size: 100MB
  max-request-size: 100MB

application-dev.yml

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/word
    username: postgres
    password: 
    driver-class-name: org.postgresql.Driver
server:
  port: 8799
  servlet:
    context-path: /ftl
uploadFilePath: E:\apache-tomcat-9.0.41\apache-tomcat-9.0.41\webapps\rfwg_files

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.lxl</groupId>
    <artifactId>mybatisplus</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mybatisplus</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>

        <!--io流转换-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

        <!--添加本地的jacob.jar包 -->
        <dependency>
            <groupId>jacob</groupId>
            <artifactId>jacob</artifactId>
            <version>1.19</version>
        </dependency>

        <!--word转pdf-->
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>3.9.0</version>
        </dependency>

        <!--io流转换-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>manage-application</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>*</include>
                    <include>*/*</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>rc/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.ftl</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

utils

这里我先把工具类放在上面是为了防止下面类里面数据会被错

package com.cao.ftlword.utils;

import java.io.Serializable;

/**
 * 消息对象
 */
public class AjaxObj implements Serializable {

	private static final long serialVersionUID = 4806448810229890854L;

	private int code;
	private String msg;
	private String token;
	private Object data;
	private Boolean flag;

	public AjaxObj() {

	}

	public Boolean getFlag() {
		return flag;
	}

	public void setFlag(Boolean flag) {
		this.flag = flag;
	}

	public AjaxObj(int code, String msg) {
		this.code = code;
		this.msg = msg;
	}

	public AjaxObj(int code, String msg, Object data) {
		this.code = code;
		this.msg = msg;
		this.data = data;
	}

	public AjaxObj(int code, String msg, Object data, Boolean flag) {
		this.code = code;
		this.msg = msg;
		this.data = data;
		this.flag = flag;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public String getToken() {
		return token;
	}

	public void setToken(String token) {
		this.token = token;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}
}
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.util.DigestUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

public class CommUtils {

    /**
     * 判断一个对象(包括String、以及Collection下的各个子类集合) 是否为空, 为空则返回true, 否则会返回false
     */
    @SuppressWarnings("rawtypes")
    public static boolean isEmpty(Object obj) {
        if (obj == null)
            return true;
        if (obj instanceof String) {
            if (((String) obj).equals(""))
                return true;
        }
        if (obj instanceof Collection<?>) {
            if (((Collection) obj).size() <= 0)
                return true;
        }
        if (obj instanceof String[]) {
            if (((String[]) obj).length <= 0) {
                return true;
            }
        }
        if (obj instanceof Object[]) {
            if (((Object[]) obj).length <= 0) {
                return true;
            }
        }

        return false;
    }

    /**
     * 生成uuid
     *
     * @return
     */
    public static String getUUID() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * 将指定日期按照指定的格式以字符串的形式进行返回
     */
    public static String getDate(String pattern, Date date) {
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        return format.format(date);
    }

    /**
     * 将当前日期按照 "年-月-日 时:分:秒" 的日期格式以字符串的形式返回
     */
    public static String getDate() {
        return getDate("yyyy-MM-dd HH:mm:ss", new Date());
    }

    public static String getMD5(String str) {
        return DigestUtils.md5DigestAsHex(str.getBytes());
    }

    /**
     * 下载文件
     */
    public static void downloadFile(String path, HttpServletResponse response) {
        File file = new File(path);

        byte[] buffer = new byte[(int) file.length()];
        FileInputStream fis = null; //文件输入流
        BufferedInputStream bis = null;

        OutputStream os = null; //输出流
        try {
            os = response.getOutputStream();
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            int i = bis.read(buffer);
            while (i != -1) {
                os.write(buffer);
                i = bis.read(buffer);
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("----------file download----------" + path);
        try {
            bis.close();
            fis.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //递归删文件
    public static boolean delAllFile(File file) {
        if (!file.exists()) {
            return false;
        }

        if (file.isDirectory()) {
            File[] files = file.listFiles();
            if (files != null) {
                for (File f : files) {
                    delAllFile(f);
                }
            }
        }
        return file.delete();
    }

    public static void delDiskFile(String filePath) {
        //删除磁盘上的附件文件
        try {
            File file = new File(filePath);
            if (file.exists()) {
                CommUtils.delAllFile(new File(filePath));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static File multipartFileToFile(MultipartFile multipartFile) {
        try {
            // 获取文件名
            String fileName = multipartFile.getOriginalFilename();
            // 获取文件后缀
            String prefix = fileName.substring(fileName.lastIndexOf("."));
            // 用uuid作为文件名,防止生成的临时文件重复
            File tempFile = File.createTempFile(CommUtils.getUUID(), prefix);
            multipartFile.transferTo(tempFile);
            return tempFile;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    // 逆向递归删除空目录
    public void delEmptyPath(String path) {
        File file = new File(path);
        if (file.exists() && file.isDirectory()) {
            File[] files = file.listFiles();
            if (files != null && files.length > 0)
                return;
            if (file.delete()) {
                delEmptyPath(file.getParent());
            }
        }
    }

    //拷贝到临时文件夹
    public static void copyDir(String sourcePath, String newPath) throws IOException {
        File file = new File(sourcePath);
        String[] filePath = file.list();
        if (!(new File(newPath)).exists()) {
            (new File(newPath)).mkdir();
        } else {
            delAllFile(new File(newPath));
            (new File(newPath)).mkdir();
        }
        if (filePath != null) {
            for (int i = 0; i < filePath.length; i++) {
                if ((new File(sourcePath + file.separator + filePath[i])).isDirectory()) {
                    copyDir(sourcePath + file.separator + filePath[i], newPath + file.separator + filePath[i]);
                }
                if (new File(sourcePath + file.separator + filePath[i]).isFile() && !new File(sourcePath + file.separator + filePath[i]).getName().contains("ys_")) {
                    copyFile(sourcePath + file.separator + filePath[i], newPath + file.separator + filePath[i]);
                }
            }
        }
    }

    public static void copyFile(String oldPath, String newPath) throws IOException {
        File oldFile = new File(oldPath);
        File file = new File(newPath);
        FileInputStream in = new FileInputStream(oldFile);
        FileOutputStream out = new FileOutputStream(file);
        byte[] buffer = new byte[2097152];
        while ((in.read(buffer)) != -1) {
            out.write(buffer);

        }
        out.close();
        in.close();

    }

    public static File getTemplateFile(String templatePath) throws Exception {
        File file = File.createTempFile("temp", null);
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resolver.getResources(templatePath);
        if (resources.length == 1) {
            InputStream inputStream = resources[0].getInputStream();
            inputStreamToFile(inputStream, file);
        } else {
            System.out.println("请检查模板文件是否存在");
        }
        return file;
    }

    public static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static File searchFile(File dir) {
        File[] subFiles = dir.listFiles();       //获取e盘下所有的文件或文件夹对象
        File resFile = dir;
        if (null != subFiles) {
            for (File subFile : subFiles) {
                if (subFile.isDirectory()) {        //文件夹则递归寻找,后缀为jpg文件则输出名字
                    resFile = searchFile(subFile);

                } else if (subFile.isFile() && subFile.getName().endsWith(".shp")) {
                    resFile = subFile;
                    break;
                }
            }
        }
        return resFile;
    }

    /**
     * byte数组转换成16进制字符串
     */
    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

    /**
     * 根据文件流判断图片类型
     */
    public static String getPicType(FileInputStream fis) {
        //读取文件的前几个字节来判断图片格式
        byte[] b = new byte[4];
        try {
            fis.read(b, 0, b.length);
            String type = bytesToHexString(b).toUpperCase();
            if (type.contains("FFD8FF")) {
                return "jpg";
            } else if (type.contains("89504E47")) {
                return "png";
            } else if (type.contains("47494638")) {
                return "gif";
            } else if (type.contains("424D")) {
                return "bmp";
            } else {
                return "unknown";
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    public static boolean isPicBySuffix(String suffix) {
        if (".JPG".equals(suffix.toUpperCase()) || ".PNG".equals(suffix.toUpperCase())
                || ".JPEG".equals(suffix.toUpperCase()) || ".GIF".equals(suffix.toUpperCase())
                || ".BMP".equals(suffix.toUpperCase())) {
            return true;
        }
        return false;
    }

    public static boolean isWordBySuffix(String suffix) {
        if (".DOC".equals(suffix.toUpperCase()) || ".DOCX".equals(suffix.toUpperCase())) {
            return true;
        }
        return false;
    }

    public static boolean isDxfBySuffix(String suffix) {
        if (".DXF".equals(suffix.toUpperCase())) {
            return true;
        }
        return false;
    }

    public static boolean isZipBySuffix(String suffix) {
        if (".ZIP".equals(suffix.toUpperCase())) {
            return true;
        }
        return false;
    }

    public static boolean isExcelBySuffix(String suffix) {
        if (".XLS".equals(suffix.toUpperCase()) || ".XLSX".equals(suffix.toUpperCase())) {
            return true;
        }
        return false;
    }

    public static JSONObject xAxisSeries(List<Object> xAxisDataList, List<Object> seriesDataList) {
        JSONObject jsonObject = new JSONObject();
        JSONObject xAxisData = new JSONObject();
        xAxisData.put("data", xAxisDataList);
        jsonObject.put("xAxis", xAxisData);

        JSONObject dd = new JSONObject();
        dd.put("data", seriesDataList);
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(dd);
        jsonObject.put("series", jsonArray);
        return jsonObject;
    }

    public static JSONObject legendSeries(List<Object> legendDataList, List<Object> seriesDataList) {
        JSONObject jsonObject = new JSONObject();
        JSONObject legendData = new JSONObject();
        legendData.put("data", legendDataList);
        jsonObject.put("legend", legendData);

        JSONObject dd = new JSONObject();
        JSONArray ja = new JSONArray();

        for (int i = 0; i < seriesDataList.size(); i++) {
            JSONObject jo = new JSONObject();
            jo.put("name", legendDataList.get(i));
            jo.put("value", seriesDataList.get(i));
            ja.add(jo);
        }

        dd.put("data", ja);
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(dd);
        jsonObject.put("series", jsonArray);
        return jsonObject;
    }

    public static void getSignPIdAndIndex(JSONArray jsonArray, String suuid, Map<String, Integer> map) {
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            JSONArray children = jsonObject.getJSONArray("children");
            if (!ObjectUtils.isEmpty(children) && children.size() > 0) {
                getSignPIdAndIndex(children, suuid, map);
            } else {
                if (suuid.equals(jsonObject.getString("id"))) {
                    map.put(jsonObject.getString("parentTId"), i);
                }
            }
        }
    }

    public static String getIpAddress(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

    public static String toUTF8(String str) {
        if (isEmpty(str)) {
            return "";
        }
        try {
            if (str.equals(new String(str.getBytes("GB2312"), "GB2312"))) {
                str = new String(str.getBytes("GB2312"), "utf-8");
                return str;
            }
        } catch (Exception exception) {
        }
        try {
            if (str.equals(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1"))) {
                str = new String(str.getBytes("ISO-8859-1"), "utf-8");
                return str;
            }
        } catch (Exception exception1) {
        }
        try {
            if (str.equals(new String(str.getBytes("GBK"), "GBK"))) {
                str = new String(str.getBytes("GBK"), "utf-8");
                return str;
            }
        } catch (Exception exception3) {
        }
        return str;
    }

    // 文件和视频
    public static boolean suffixName(String suffixName) {
        if ((".txt").equalsIgnoreCase(suffixName) || (".dwg").equalsIgnoreCase(suffixName)
                || (".jpg").equalsIgnoreCase(suffixName) || (".jpeg").equalsIgnoreCase(suffixName) || (".png").equalsIgnoreCase(suffixName)
                || (".bmp").equalsIgnoreCase(suffixName) || (".gif").equalsIgnoreCase(suffixName)
                || (".mp4").equalsIgnoreCase(suffixName) || (".avi").equalsIgnoreCase(suffixName)
                || (".3gp").equalsIgnoreCase(suffixName) || (".flv").equalsIgnoreCase(suffixName)
                || (".rar").equalsIgnoreCase(suffixName) || (".zip").equalsIgnoreCase(suffixName)
                || (".doc").equalsIgnoreCase(suffixName) || (".docx").equalsIgnoreCase(suffixName)
                || (".xlsx").equalsIgnoreCase(suffixName) || (".xls").equalsIgnoreCase(suffixName) || (".pdf").equalsIgnoreCase(suffixName)
                || (".ppt").equalsIgnoreCase(suffixName) || (".pps").equalsIgnoreCase(suffixName) || (".pptx").equalsIgnoreCase(suffixName)) {
            return true;
        } else {
            return false;
        }
    }

    // 图片
    public static boolean suffixNameImage(String suffixName) {
        if ((".tiff").equalsIgnoreCase(suffixName) || (".pjp").equalsIgnoreCase(suffixName)
                || (".jfif").equalsIgnoreCase(suffixName) || (".gif").equalsIgnoreCase(suffixName) || (".svg").equalsIgnoreCase(suffixName)
                || (".bmp").equalsIgnoreCase(suffixName) || (".png").equalsIgnoreCase(suffixName)
                || (".jpeg").equalsIgnoreCase(suffixName) || (".svgz").equalsIgnoreCase(suffixName)
                || (".jpg").equalsIgnoreCase(suffixName) || (".webp").equalsIgnoreCase(suffixName)
                || (".ico").equalsIgnoreCase(suffixName) || (".xbm").equalsIgnoreCase(suffixName)
                || (".dib").equalsIgnoreCase(suffixName) || (".tif").equalsIgnoreCase(suffixName)
                || (".pjpeg").equalsIgnoreCase(suffixName) || (".avif").equalsIgnoreCase(suffixName)) {
            return true;
        } else {
            return false;
        }
    }

    // 文件不包含视频
    public static boolean suffixNameFile(String suffixName) {
        if ((".txt").equalsIgnoreCase(suffixName) || (".dwg").equalsIgnoreCase(suffixName)
                || (".jpg").equalsIgnoreCase(suffixName) || (".jpeg").equalsIgnoreCase(suffixName) || (".png").equalsIgnoreCase(suffixName)
                || (".bmp").equalsIgnoreCase(suffixName) || (".gif").equalsIgnoreCase(suffixName)
                || (".rar").equalsIgnoreCase(suffixName) || (".zip").equalsIgnoreCase(suffixName)
                || (".doc").equalsIgnoreCase(suffixName) || (".docx").equalsIgnoreCase(suffixName)
                || (".xlsx").equalsIgnoreCase(suffixName) || (".xls").equalsIgnoreCase(suffixName) || (".pdf").equalsIgnoreCase(suffixName)
                || (".ppt").equalsIgnoreCase(suffixName) || (".pps").equalsIgnoreCase(suffixName) || (".pptx").equalsIgnoreCase(suffixName)) {
            return true;
        } else {
            return false;
        }
    }

    // 文件不包含视频
    public static boolean suffixNameExcel(String suffixName) {
        if ((".xlsx").equalsIgnoreCase(suffixName) || (".xls").equalsIgnoreCase(suffixName) || (".pdf").equalsIgnoreCase(suffixName)) {
            return true;
        } else {
            return false;
        }
    }
}
import org.springframework.beans.factory.annotation.Value;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLDecoder;
import java.util.UUID;

public class FileUtil {
    @Value("${uploadFilePath}")
    private String uploadFilePath;

    private FileUtil() {

    }

    /**
     * File转换为byte[]
     */
    public static byte[] getBytesByFile(File file) {
        try {
            //获取输入流
            FileInputStream fis = new FileInputStream(file);

            //新的 byte 数组输出流,缓冲区容量1024byte
            ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
            //缓存
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            //改变为byte[]
            byte[] data = bos.toByteArray();
            //
            bos.close();
            return data;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void uploadFile(byte[] file, String filePath, String fileName) throws IOException {
        File targetFile = new File(filePath);
        if (!targetFile.exists()) {
            if (!targetFile.mkdirs()) {
                throw new IOException();
            }
        }
        FileOutputStream out = null;
        try {
            out = new FileOutputStream(filePath + "/" + fileName);
            out.write(file);
            out.flush();
        } catch (IOException e) {
            throw new IOException();
        } finally {
            if (out != null) {
                out.close();
            }
        }
    }

    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                return true;
            } else {
                return false;
            }
        }
        return false;

    }

    public static String renameToUUID(String fileName) {
        return UUID.randomUUID() + "." + fileName.substring(fileName.lastIndexOf(".") + 1);
    }

    /**
     * 文件删除方法
     */
    public static boolean deleteQuietly(String fileAddress) {
        File file = new File(fileAddress);
        if (file == null) {
            return false;
        } else {
            try {
                if (file.isDirectory()) {
//                    cleanDirectory(file);
                }
            } catch (Exception var3) {
                ;
            }

            try {
                return file.delete();
            } catch (Exception var2) {
                return false;
            }
        }
    }

    /**
     * 下载本地文件
     */
    public static void downloadLocal(HttpServletResponse response, String filePath,String encode) {
        response.setContentType("text/html;charset=" + encode);
        try {
            // 读到流中
            InputStream inStream = new FileInputStream(filePath); // 文件的存放路径
            // path是指欲下载的文件的路径
            File file = new File(filePath);
            // 取得文件名
            String fileName = file.getName();
            // 设置输出的格式
            response.reset();
            response.setContentType("bin");
            response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(encode), "ISO8859-1") + "\"");
            // 循环取出流中的数据
            byte[] b = new byte[100];
            int len;
            while ((len = inStream.read(b)) > 0) {
                response.getOutputStream().write(b, 0, len);
            }
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过文件路径直接修改文件名
     *
     * @param filePath    需要修改的文件的完整路径
     * @param newFileName 需要修改的文件的名称
     * @return
     */
    public static String FixFileName(String filePath, String newFileName) {
        File f = new File(filePath);
        if (!f.exists()) { // 判断原文件是否存在(防止文件名冲突)
            return null;
        }
        newFileName = newFileName.trim();
        if ("".equals(newFileName) || newFileName == null) // 文件名不能为空
            return null;
        String newFilePath = null;
        if (f.isDirectory()) { // 判断是否为文件夹
            newFilePath = filePath.substring(0, filePath.lastIndexOf("/")) + "/" + newFileName;
        } else {
            newFilePath = filePath.substring(0, filePath.lastIndexOf("/")) + "/" + newFileName;
        }
        File nf = new File(newFilePath);
        try {
            f.renameTo(nf); // 修改文件名
        } catch (Exception err) {
            err.printStackTrace();
            return null;
        }
        return newFilePath;
    }

    /*
     *写文件
     */
    public static boolean write(String filePath, String fileName, String fileContent) throws IOException {
        boolean result = false;
        File targetFile = new File(filePath);
        if (!targetFile.exists()) {
            if (!targetFile.mkdirs()) {
                throw new IOException();
            }
        }

        try {
            FileOutputStream fs = new FileOutputStream(filePath+"/"+fileName);
            //byte[] b = fileContent.getBytes();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fs, "UTF-8"));
          /*

            带bom的utf8

            fs.write( 0xef );

            fs.write( 0xbb);

            fs.write( 0xbf);*/
            writer.write(fileContent);
            writer.flush();
            writer.close();
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    //需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。
    public static boolean  deleteFolder(File folder) throws Exception {
        boolean flag = false;
        if (!folder.exists()) {
            throw new Exception("文件不存在");
        }
        File[] files = folder.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    //递归直到目录下没有文件
                    deleteFolder(file);
//                    System.err.println("删除目录下所有文件");
                    flag=true;
                } else {
                    //删除
                    file.delete();
//                    System.err.println("删除文件夹里面的文件");
                    flag=true;
                }
            }
        }
        //删除
        folder.delete();
        return flag;
    }

    public static void downloadFile(HttpServletResponse resp, String downloadPath) throws IOException {
        String filePath = null;
        try {

            filePath= URLDecoder.decode(downloadPath,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //String realPath = "D:" + File.separator + "apache-tomcat-8.5.15" + File.separator + "files";
        String realPath=filePath;//项目路径下你存放文件的地方
        File file = new File(realPath);
        if(!file.exists()){
            throw new IOException("文件不存在");
        }
        String name = new String(file.getName().getBytes("GBK"), "ISO-8859-1");
        resp.reset();
        /*
         * 跨域配置
         * */
        resp.addHeader("Access-Control-Allow-Origin", "*");
        resp.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        resp.addHeader("Access-Control-Allow-Headers", "Content-Type");

        resp.setContentType("application/octet-stream");
        resp.setCharacterEncoding("utf-8");
        resp.setContentLength((int) file.length());
        resp.setHeader("Content-Disposition", "attachment;filename=" + name);
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        OutputStream os = null;
        try {
            os = resp.getOutputStream();
            bis = new BufferedInputStream(new FileInputStream(file));
            int i = 0;
            while ((i = bis.read(buff)) != -1) {
                os.write(buff, 0, i);
                os.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.apache.tomcat.util.codec.binary.Base64;
import org.springframework.stereotype.Component;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 
* <p>Title: ftl模板文件转成word文件下载</p>
* <p>Description: </p>
* <p>Company: 常州培涵信息科技有限公司</p>
* <p>使用说明: 
* 		1.对于简单文件下载 只需要在map里面put
* 		2.对于附属图片的需要调用makeImagePathToBASE64Encoder进行编码
* 		3.对于循环需要使用List<Object> 此处Object为业务对象
* </p>
 */
@Component
public class FtlToWord {

	private static Configuration configuration = null;
	private static Map<String, Template> allTemplates = null;

	/**
	 * 配置模板
	 * @param fileName
	 * @param filePath
	 */
	public static void configure(String fileName, String filePath) {
		configuration = new Configuration();  
		configuration.setDefaultEncoding("utf-8");
		configuration.setClassForTemplateLoading(FtlToWord.class, filePath);
		allTemplates = new HashMap<String, Template>(); // Java 7 钻石语法
		try {
			allTemplates.put(fileName, configuration.getTemplate(fileName + ".ftl"));
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
	/**
	 * 创建文档
	 */
	public static File createDoc(Map<?, ?> dataMap, String templateName) {
		String name = "temp" + (int) (Math.random() * 100000) + ".doc";
		File f = new File(name);
		Template t = allTemplates.get(templateName);
		try {
			// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
			Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8");
			t.process(dataMap, w);
			w.close();
		} catch (Exception ex) {
			ex.printStackTrace();
			throw new RuntimeException(ex);
		}
		return f;
	}
	/**
	 * 下载文档
	 */
	public static void downloadDoc(HttpServletResponse response, Map<?, ?> dataMap, String templateName, String downloadName) throws IOException {
		 	File file = null;  
	        InputStream fin = null;  
	        ServletOutputStream out = null;
	        try {  
	            // 调用工具类WordGenerator的createDoc方法生成Word文档 
	        	file = FtlToWord.createDoc(dataMap,templateName);  
	            fin = new FileInputStream(file);  
	            response.setCharacterEncoding("utf-8");  
	            response.setContentType("application/msword");  
	            // 设置浏览器以下载的方式处理该文件默认名为resume.doc  
	            response.addHeader("Content-Disposition", "attachment;filename="+downloadName+".doc");
	            out = response.getOutputStream();  
	            byte[] buffer = new byte[512];  // 缓冲区  
	            int bytesToRead = -1;  
	            // 通过循环将读入的Word文件的内容输出到浏览器中  
	            while((bytesToRead = fin.read(buffer)) != -1) {  
	                out.write(buffer, 0, bytesToRead);  
	            }  
	        } finally {  
	            if(fin != null) fin.close();  
	            if(out != null) out.close();  
	            if(file != null) file.delete(); // 删除临时文件  
	        }  
	}
	public static String makeImagePathToBASE64Encoder(String imagePath) throws IOException {
		/** 将图片转化为**/
        InputStream in = null;
        byte[] data = null;
        try {
            in = new FileInputStream(imagePath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(in != null){
                in.close();
            }
        }
        /** 进行base64位编码  只支持Java8**/
        //Encoder encoder = Base64.getEncoder();
       // String encodeToString = encoder.encodeToString(data);
        String encodeToString = Base64.encodeBase64String(data);
		return encodeToString;
	}

	/**
	 * 下载文档存到本地
	 */
	public static void downloadDocLocal(Map<?, ?> dataMap, String templateName, String downloadName,String path,String uuid) throws IOException {
		File file = null;
		InputStream fin = null;
		// 存到本地
		OutputStream os = null;
		try {
			// 调用工具类WordGenerator的createDoc方法生成Word文档
			file = FtlToWord.createDoc(dataMap,templateName);
			fin = new FileInputStream(file);
			byte[] bs = new byte[1024];
			// 读取到的数据长度
			int len;
			// 输出的文件流保存到本地文件
			File tempFile = new File(path);
			if (!tempFile.exists()) {
				tempFile.mkdirs();
			}
			downloadName = new String(downloadName.getBytes("ISO-8859-1"), "utf-8");
			os = new FileOutputStream(tempFile.getPath() + File.separator + downloadName+".doc");
			// 开始读取,存到服务器
			while ((len = fin.read(bs)) != -1) {
				os.write(bs, 0, len);
			}

		} finally {
			if(fin != null) fin.close();
			if(os != null) os.close();
//			if(out != null) out.close();
			if(file != null) file.delete(); // 删除临时文件
		}

	}

	public static void wordToPdf(String fileName,String fileNameToDown){
		Document doc = new Document(fileName);
		doc.saveToFile( fileNameToDown, FileFormat.PDF);
	}
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

import java.util.Map;

public class JsonUtil {
 
    /**
     * 将json转化成map
     */
    public static Map<String, Object> convertJsonStrToMap(String jsonStr){
 
        Map<String, Object> map = JSON.parseObject(
                jsonStr,new TypeReference<Map<String, Object>>(){} );
 
        return map;
    }
}
public class ReturnValCode {

	/**
	 * 操作失败的标志码
	 */
	public static final int RETURN_VALUE_CODES_FAIL = -1;

	/**
	 * 操作成功的标志码
	 */
	public static final int RTN_VAL_CODE_SUCCESS = 0;

	/**
	 * 登录成功
	 */
	public static final int LOGIN_SUCCESS = 101;

	public static final int UN_LOGIN_OR_TIME_OUT = -101;

	/**
	 * 登录失败-账户名或者密码错误
	 */
	public static final int LOGIN_FAIL = 102;

	/**
	 * 非激活状态
	 */
	public static final int LOGIN_UN_ACTIV = 103;

	/**
	 * 应用程序与数据库操作发生错误
	 */
	public static final int LOGIN_EXCEPTION = 104;

}
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Tools {
	
	/**
	 * 获取当前的年月日的时间, 返回的格式形如pattern指定的格式, 默认的类型为yyyy-MM, 即返回 年-月<br/>
	 * pattern的格式参考jdk手册中的说明, 诸如yyyy-MM-dd
	 */
	public static String getDate(String pattern) {
		if(pattern==null || "".equals(pattern))
			pattern = "yyyy-MM";
		return new SimpleDateFormat(pattern).format(new Date());
	}
	
	/**
	 * 字符串转成日期
	 */
	public static Date getDateStr(String pattern,String str) {
		SimpleDateFormat sdf =   new SimpleDateFormat(pattern);
		Date date = null;
		try {
			date = sdf.parse(str);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return date;
		
	}
	
	/**
	 * 获取timestamp时间戳
	 */
	public static Timestamp getTimestamp(String pattern) {
		if(pattern==null || "".equals(pattern))
			pattern = "yyyy-MM-dd HH:mm:ss";
		return Timestamp.valueOf(new SimpleDateFormat(pattern).format(new Date()));
	}
	/**
	 * 获取timestamp时间戳
	 */
	public static Timestamp getTimes(String str,String pattern) {
		//if(pattern==null || "".equals(pattern))
			//pattern = "yyyy-MM-dd HH:mm:ss";
		Timestamp ts = new Timestamp(System.currentTimeMillis());   
		 ts = Timestamp.valueOf(str);
		 System.err.println("你好:"+ts);
		return ts;
	}
	
}

controller

import com.cao.ftlword.service.CompanyService;
import com.cao.ftlword.utils.AjaxObj;
import com.cao.ftlword.utils.JsonUtil;
import com.cao.ftlword.utils.ReturnValCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

@RestController
@RequestMapping("/company")
public class CompanyController {
    @Autowired
    private CompanyService companyService;
    // 新增方案与附件,修改方案与附件,根据uuid判断
    @PostMapping("/insertCompany")
    public AjaxObj insertProject(String info,  HttpServletRequest request) {
        Map<String, Object> infoMap = JsonUtil.convertJsonStrToMap(info);
        companyService.insertCompanyAndAttach(infoMap,request);
        return new AjaxObj(ReturnValCode.RTN_VAL_CODE_SUCCESS, "请求成功");
    }

    @GetMapping("/wordDownload")
    public void wordDownload(String uuid,
                             HttpServletResponse response) throws Exception {
        companyService.wordDownload(uuid,response);
    }
}

entity

import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

@Data
public class Company {
    @TableId
    private String uuid;   // 主键
    private String name;  // 公司名称
    private String webUrl;  // 网址
    private String createUser;  // 创始人
    private String createTime;  // 成立时间
    private String dist;  // 公司地址
    private String range;  // 经营范围
    private String about;  // 简介
}
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

@Data
public class CompanyAttach {
    @TableId
    private String uuid;   // 主键
    private String attachPath;  // 附件路径
    private String comId;  // 公司id
}

mapper

这里我把两个写在一起,没有分开,开发的时候最好把mapper分开写

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cao.ftlword.entity.Company;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Repository
public interface CompanyMapper extends BaseMapper<Company> {

    // 新增公司
    void insertCompany(Map<String,Object> map);

    // 新增附件
    void insertCompanyAttach(Map<String,Object> map);

    // 根据公司id获取到详情
    Company selectCompany(@Param("uuid")String uuid);

    // 根据公司id获取到相关图片
    List<Map<String, Object>>  selectCompanyAttach(@Param("uuid")String uuid);

}

service

package com.cao.ftlword.service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

public interface CompanyService {

    // 新增工程与附件
    void insertCompanyAndAttach(Map<String,Object> info,  HttpServletRequest request);

    // 导出word
    void wordDownload(String uuid, HttpServletResponse response);
}

impl

import com.alibaba.fastjson.JSON;
import com.cao.ftlword.entity.Company;
import com.cao.ftlword.mapper.CompanyMapper;
import com.cao.ftlword.service.CompanyService;
import com.cao.ftlword.utils.CommUtils;
import com.cao.ftlword.utils.FileUtil;
import com.cao.ftlword.utils.FtlToWord;
import com.cao.ftlword.vo.WordVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class CompanyServiceImpl implements CompanyService {

    @Autowired
    private CompanyMapper companyMapper;
    @Value("${uploadFilePath}")
    private String uploadFilePath;

    @Override
    public void insertCompanyAndAttach(Map<String, Object> info, HttpServletRequest request) {
// 新增项目与文件
        info.put("uuid", CommUtils.getUUID());
        String projId = info.get("uuid") + "";

        // 项目基本信息入库
        companyMapper.insertCompany(info);

        // 处理文件的map
        Map<String, Object> map = new HashMap<>();
        //处理附件
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
        //上传图片
        try {
            if (!files.isEmpty()) {
                for (int i = 0; i < files.size(); i++) {
                    MultipartFile file = files.get(i);
                    //获取文件全称 包含后缀
                    String fName = file.getOriginalFilename();
                    //截取文件后缀
                    String attachId = CommUtils.getUUID();
                    map.put("uuid", CommUtils.getUUID());
                    map.put("attach_path", "/word/" + projId + "/" + attachId + "/" + fName);
                    map.put("comId", projId);
                    // 存到数据库中
                    companyMapper.insertCompanyAttach(map);
                    // 上传文件到tomcat
                    FileUtil.uploadFile(file.getBytes(), uploadFilePath + "/word/" + projId + "/" + attachId,
                            fName);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void wordDownload(String uuid, HttpServletResponse response) {
        // 1.根据公司id获取到详情,转化为map
        Company company = companyMapper.selectCompany(uuid);
        Map<String, Object> projectBaseInfo = JSON.parseObject(JSON.toJSONString(company), Map.class);
        // 2.根据公司id获取到相关图片
        List<Map<String, Object>> list = companyMapper.selectCompanyAttach(uuid);
        // 3.存储到图片的路径集合
        List<WordVo> image = new ArrayList<>();
        // 4.循环获取
        for (int i = 0; i < list.size(); i++) {
            WordVo doc=new WordVo();
            String attach_path = list.get(i).get("attach_path") + "";
            String replace = attach_path.replace("\\", "\\");
            try {
                doc.setImage(FtlToWord.makeImagePathToBASE64Encoder(uploadFilePath+ File.separator+list.get(i).get("attach_path")));
            } catch (IOException e) {
                e.printStackTrace();
            }
            image.add(doc);
        }

        //----------------------------------------------------------------
        projectBaseInfo.put("image", image);
        //将信息添加到Map里,附件,配置模板,配置模板
        String fileName = "简介";
        String filePath = "/templates";
        FtlToWord.configure(fileName, filePath);
        //下载word
        String templateName = "简介";
        String downloadName = projectBaseInfo.get("name")+"简介";
        try {
            downloadName = new String(downloadName.getBytes("utf-8"), "ISO-8859-1");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        try {
            FtlToWord.downloadDoc(response, projectBaseInfo, templateName, downloadName);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

vo

import lombok.Data;

@Data
public class WordVo {
	private String image;  // 过程图片
}

启动类

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.cao.ftlword.mapper")
public class FtlWordApplication {
    public static void main(String[] args) {
        SpringApplication.run(FtlWordApplication.class, args);
        System.err.println("*********ftl导出word项目启动成功*********");
    }
}

resources

mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cao.ftlword.mapper.CompanyMapper">

    <insert id="insertCompany">
        insert into t_company(uuid,name,web_url,create_user,create_time,dist,range,about)
        values(#{uuid},#{name},#{webUrl},#{createUser},#{createTime},#{dist},#{range},#{about})
    </insert>

    <insert id="insertCompanyAttach">
        insert into t_company_attach(uuid,attach_path,com_id)
        values(#{uuid},#{attach_path},#{comId})
    </insert>

    <select id="selectCompany" resultType="com.cao.ftlword.entity.Company">
        select * from t_company where uuid=#{uuid}
    </select>

    <select id="selectCompanyAttach" resultType="map">
        select * from t_company_attach where com_id=#{uuid}
    </select>

</mapper>

templates

简介.ftl
<#setting classic_compatible=true> 参数为空则不会报错

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<#setting classic_compatible=true>
<w:wordDocument
    xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
    xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
    xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex"
    xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:v="urn:schemas-microsoft-com:vml"
    xmlns:w10="urn:schemas-microsoft-com:office:word"
    xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
    xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
    xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"
    xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
    xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
    <w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>
    <o:DocumentProperties>
        <o:Author>kris</o:Author>
        <o:LastAuthor>kris</o:LastAuthor>
        <o:Revision>2</o:Revision>
        <o:TotalTime>1</o:TotalTime>
        <o:Created>2021-03-25T06:36:00Z</o:Created>
        <o:LastSaved>2021-03-25T06:36:00Z</o:LastSaved>
        <o:Pages>1</o:Pages>
        <o:Words>19</o:Words>
        <o:Characters>111</o:Characters>
        <o:Lines>1</o:Lines>
        <o:Paragraphs>1</o:Paragraphs>
        <o:CharactersWithSpaces>129</o:CharactersWithSpaces>
        <o:Version>16</o:Version>
    </o:DocumentProperties>
    <w:fonts>
        <w:defaultFonts w:ascii="等线" w:fareast="等线" w:h-ansi="等线" w:cs="Times New Roman"/>
        <w:font w:name="Times New Roman">
            <w:panose-1 w:val="02020603050405020304"/>
            <w:charset w:val="00"/>
            <w:family w:val="Roman"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="宋体">
            <w:altName w:val="SimSun"/>
            <w:panose-1 w:val="02010600030101010101"/>
            <w:charset w:val="86"/>
            <w:family w:val="auto"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="宋体">
            <w:altName w:val="SimSun"/>
            <w:panose-1 w:val="02010600030101010101"/>
            <w:charset w:val="86"/>
            <w:family w:val="auto"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="等线">
            <w:altName w:val="DengXian"/>
            <w:panose-1 w:val="02010600030101010101"/>
            <w:charset w:val="86"/>
            <w:family w:val="auto"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="A00002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004000F" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="微软雅黑">
            <w:panose-1 w:val="020B0503020204020204"/>
            <w:charset w:val="86"/>
            <w:family w:val="Swiss"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="80000287" w:usb-1="2ACF3C50" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004001F" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="@宋体">
            <w:panose-1 w:val="02010600030101010101"/>
            <w:charset w:val="86"/>
            <w:family w:val="auto"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="@微软雅黑">
            <w:charset w:val="86"/>
            <w:family w:val="Swiss"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="80000287" w:usb-1="2ACF3C50" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004001F" w:csb-1="00000000"/>
        </w:font>
        <w:font w:name="@等线">
            <w:panose-1 w:val="02010600030101010101"/>
            <w:charset w:val="86"/>
            <w:family w:val="auto"/>
            <w:pitch w:val="variable"/>
            <w:sig w:usb-0="A00002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004000F" w:csb-1="00000000"/>
        </w:font>
    </w:fonts>
    <w:styles>
        <w:versionOfBuiltInStylenames w:val="7"/>
        <w:latentStyles w:defLockedState="off" w:latentStyleCount="371">
            <w:lsdException w:name="Normal"/>
            <w:lsdException w:name="heading 1"/>
            <w:lsdException w:name="heading 2"/>
            <w:lsdException w:name="heading 3"/>
            <w:lsdException w:name="heading 4"/>
            <w:lsdException w:name="heading 5"/>
            <w:lsdException w:name="heading 6"/>
            <w:lsdException w:name="heading 7"/>
            <w:lsdException w:name="heading 8"/>
            <w:lsdException w:name="heading 9"/>
            <w:lsdException w:name="index 1"/>
            <w:lsdException w:name="index 2"/>
            <w:lsdException w:name="index 3"/>
            <w:lsdException w:name="index 4"/>
            <w:lsdException w:name="index 5"/>
            <w:lsdException w:name="index 6"/>
            <w:lsdException w:name="index 7"/>
            <w:lsdException w:name="index 8"/>
            <w:lsdException w:name="index 9"/>
            <w:lsdException w:name="toc 1"/>
            <w:lsdException w:name="toc 2"/>
            <w:lsdException w:name="toc 3"/>
            <w:lsdException w:name="toc 4"/>
            <w:lsdException w:name="toc 5"/>
            <w:lsdException w:name="toc 6"/>
            <w:lsdException w:name="toc 7"/>
            <w:lsdException w:name="toc 8"/>
            <w:lsdException w:name="toc 9"/>
            <w:lsdException w:name="Normal Indent"/>
            <w:lsdException w:name="footnote text"/>
            <w:lsdException w:name="annotation text"/>
            <w:lsdException w:name="header"/>
            <w:lsdException w:name="footer"/>
            <w:lsdException w:name="index heading"/>
            <w:lsdException w:name="caption"/>
            <w:lsdException w:name="table of figures"/>
            <w:lsdException w:name="envelope address"/>
            <w:lsdException w:name="envelope return"/>
            <w:lsdException w:name="footnote reference"/>
            <w:lsdException w:name="annotation reference"/>
            <w:lsdException w:name="line number"/>
            <w:lsdException w:name="page number"/>
            <w:lsdException w:name="endnote reference"/>
            <w:lsdException w:name="endnote text"/>
            <w:lsdException w:name="table of authorities"/>
            <w:lsdException w:name="macro"/>
            <w:lsdException w:name="toa heading"/>
            <w:lsdException w:name="List"/>
            <w:lsdException w:name="List Bullet"/>
            <w:lsdException w:name="List Number"/>
            <w:lsdException w:name="List 2"/>
            <w:lsdException w:name="List 3"/>
            <w:lsdException w:name="List 4"/>
            <w:lsdException w:name="List 5"/>
            <w:lsdException w:name="List Bullet 2"/>
            <w:lsdException w:name="List Bullet 3"/>
            <w:lsdException w:name="List Bullet 4"/>
            <w:lsdException w:name="List Bullet 5"/>
            <w:lsdException w:name="List Number 2"/>
            <w:lsdException w:name="List Number 3"/>
            <w:lsdException w:name="List Number 4"/>
            <w:lsdException w:name="List Number 5"/>
            <w:lsdException w:name="Title"/>
            <w:lsdException w:name="Closing"/>
            <w:lsdException w:name="Signature"/>
            <w:lsdException w:name="Default Paragraph Font"/>
            <w:lsdException w:name="Body Text"/>
            <w:lsdException w:name="Body Text Indent"/>
            <w:lsdException w:name="List Continue"/>
            <w:lsdException w:name="List Continue 2"/>
            <w:lsdException w:name="List Continue 3"/>
            <w:lsdException w:name="List Continue 4"/>
            <w:lsdException w:name="List Continue 5"/>
            <w:lsdException w:name="Message Header"/>
            <w:lsdException w:name="Subtitle"/>
            <w:lsdException w:name="Salutation"/>
            <w:lsdException w:name="Date"/>
            <w:lsdException w:name="Body Text First Indent"/>
            <w:lsdException w:name="Body Text First Indent 2"/>
            <w:lsdException w:name="Note Heading"/>
            <w:lsdException w:name="Body Text 2"/>
            <w:lsdException w:name="Body Text 3"/>
            <w:lsdException w:name="Body Text Indent 2"/>
            <w:lsdException w:name="Body Text Indent 3"/>
            <w:lsdException w:name="Block Text"/>
            <w:lsdException w:name="Hyperlink"/>
            <w:lsdException w:name="FollowedHyperlink"/>
            <w:lsdException w:name="Strong"/>
            <w:lsdException w:name="Emphasis"/>
            <w:lsdException w:name="Document Map"/>
            <w:lsdException w:name="Plain Text"/>
            <w:lsdException w:name="E-mail Signature"/>
            <w:lsdException w:name="HTML Top of Form"/>
            <w:lsdException w:name="HTML Bottom of Form"/>
            <w:lsdException w:name="Normal (Web)"/>
            <w:lsdException w:name="HTML Acronym"/>
            <w:lsdException w:name="HTML Address"/>
            <w:lsdException w:name="HTML Cite"/>
            <w:lsdException w:name="HTML Code"/>
            <w:lsdException w:name="HTML Definition"/>
            <w:lsdException w:name="HTML Keyboard"/>
            <w:lsdException w:name="HTML Preformatted"/>
            <w:lsdException w:name="HTML Sample"/>
            <w:lsdException w:name="HTML Typewriter"/>
            <w:lsdException w:name="HTML Variable"/>
            <w:lsdException w:name="Normal Table"/>
            <w:lsdException w:name="annotation subject"/>
            <w:lsdException w:name="No List"/>
            <w:lsdException w:name="Outline List 1"/>
            <w:lsdException w:name="Outline List 2"/>
            <w:lsdException w:name="Outline List 3"/>
            <w:lsdException w:name="Table Simple 1"/>
            <w:lsdException w:name="Table Simple 2"/>
            <w:lsdException w:name="Table Simple 3"/>
            <w:lsdException w:name="Table Classic 1"/>
            <w:lsdException w:name="Table Classic 2"/>
            <w:lsdException w:name="Table Classic 3"/>
            <w:lsdException w:name="Table Classic 4"/>
            <w:lsdException w:name="Table Colorful 1"/>
            <w:lsdException w:name="Table Colorful 2"/>
            <w:lsdException w:name="Table Colorful 3"/>
            <w:lsdException w:name="Table Columns 1"/>
            <w:lsdException w:name="Table Columns 2"/>
            <w:lsdException w:name="Table Columns 3"/>
            <w:lsdException w:name="Table Columns 4"/>
            <w:lsdException w:name="Table Columns 5"/>
            <w:lsdException w:name="Table Grid 1"/>
            <w:lsdException w:name="Table Grid 2"/>
            <w:lsdException w:name="Table Grid 3"/>
            <w:lsdException w:name="Table Grid 4"/>
            <w:lsdException w:name="Table Grid 5"/>
            <w:lsdException w:name="Table Grid 6"/>
            <w:lsdException w:name="Table Grid 7"/>
            <w:lsdException w:name="Table Grid 8"/>
            <w:lsdException w:name="Table List 1"/>
            <w:lsdException w:name="Table List 2"/>
            <w:lsdException w:name="Table List 3"/>
            <w:lsdException w:name="Table List 4"/>
            <w:lsdException w:name="Table List 5"/>
            <w:lsdException w:name="Table List 6"/>
            <w:lsdException w:name="Table List 7"/>
            <w:lsdException w:name="Table List 8"/>
            <w:lsdException w:name="Table 3D effects 1"/>
            <w:lsdException w:name="Table 3D effects 2"/>
            <w:lsdException w:name="Table 3D effects 3"/>
            <w:lsdException w:name="Table Contemporary"/>
            <w:lsdException w:name="Table Elegant"/>
            <w:lsdException w:name="Table Professional"/>
            <w:lsdException w:name="Table Subtle 1"/>
            <w:lsdException w:name="Table Subtle 2"/>
            <w:lsdException w:name="Table Web 1"/>
            <w:lsdException w:name="Table Web 2"/>
            <w:lsdException w:name="Table Web 3"/>
            <w:lsdException w:name="Balloon Text"/>
            <w:lsdException w:name="Table Grid"/>
            <w:lsdException w:name="Table Theme"/>
            <w:lsdException w:name="Placeholder Text"/>
            <w:lsdException w:name="No Spacing"/>
            <w:lsdException w:name="Light Shading"/>
            <w:lsdException w:name="Light List"/>
            <w:lsdException w:name="Light Grid"/>
            <w:lsdException w:name="Medium Shading 1"/>
            <w:lsdException w:name="Medium Shading 2"/>
            <w:lsdException w:name="Medium List 1"/>
            <w:lsdException w:name="Medium List 2"/>
            <w:lsdException w:name="Medium Grid 1"/>
            <w:lsdException w:name="Medium Grid 2"/>
            <w:lsdException w:name="Medium Grid 3"/>
            <w:lsdException w:name="Dark List"/>
            <w:lsdException w:name="Colorful Shading"/>
            <w:lsdException w:name="Colorful List"/>
            <w:lsdException w:name="Colorful Grid"/>
            <w:lsdException w:name="Light Shading Accent 1"/>
            <w:lsdException w:name="Light List Accent 1"/>
            <w:lsdException w:name="Light Grid Accent 1"/>
            <w:lsdException w:name="Medium Shading 1 Accent 1"/>
            <w:lsdException w:name="Medium Shading 2 Accent 1"/>
            <w:lsdException w:name="Medium List 1 Accent 1"/>
            <w:lsdException w:name="Revision"/>
            <w:lsdException w:name="List Paragraph"/>
            <w:lsdException w:name="Quote"/>
            <w:lsdException w:name="Intense Quote"/>
            <w:lsdException w:name="Medium List 2 Accent 1"/>
            <w:lsdException w:name="Medium Grid 1 Accent 1"/>
            <w:lsdException w:name="Medium Grid 2 Accent 1"/>
            <w:lsdException w:name="Medium Grid 3 Accent 1"/>
            <w:lsdException w:name="Dark List Accent 1"/>
            <w:lsdException w:name="Colorful Shading Accent 1"/>
            <w:lsdException w:name="Colorful List Accent 1"/>
            <w:lsdException w:name="Colorful Grid Accent 1"/>
            <w:lsdException w:name="Light Shading Accent 2"/>
            <w:lsdException w:name="Light List Accent 2"/>
            <w:lsdException w:name="Light Grid Accent 2"/>
            <w:lsdException w:name="Medium Shading 1 Accent 2"/>
            <w:lsdException w:name="Medium Shading 2 Accent 2"/>
            <w:lsdException w:name="Medium List 1 Accent 2"/>
            <w:lsdException w:name="Medium List 2 Accent 2"/>
            <w:lsdException w:name="Medium Grid 1 Accent 2"/>
            <w:lsdException w:name="Medium Grid 2 Accent 2"/>
            <w:lsdException w:name="Medium Grid 3 Accent 2"/>
            <w:lsdException w:name="Dark List Accent 2"/>
            <w:lsdException w:name="Colorful Shading Accent 2"/>
            <w:lsdException w:name="Colorful List Accent 2"/>
            <w:lsdException w:name="Colorful Grid Accent 2"/>
            <w:lsdException w:name="Light Shading Accent 3"/>
            <w:lsdException w:name="Light List Accent 3"/>
            <w:lsdException w:name="Light Grid Accent 3"/>
            <w:lsdException w:name="Medium Shading 1 Accent 3"/>
            <w:lsdException w:name="Medium Shading 2 Accent 3"/>
            <w:lsdException w:name="Medium List 1 Accent 3"/>
            <w:lsdException w:name="Medium List 2 Accent 3"/>
            <w:lsdException w:name="Medium Grid 1 Accent 3"/>
            <w:lsdException w:name="Medium Grid 2 Accent 3"/>
            <w:lsdException w:name="Medium Grid 3 Accent 3"/>
            <w:lsdException w:name="Dark List Accent 3"/>
            <w:lsdException w:name="Colorful Shading Accent 3"/>
            <w:lsdException w:name="Colorful List Accent 3"/>
            <w:lsdException w:name="Colorful Grid Accent 3"/>
            <w:lsdException w:name="Light Shading Accent 4"/>
            <w:lsdException w:name="Light List Accent 4"/>
            <w:lsdException w:name="Light Grid Accent 4"/>
            <w:lsdException w:name="Medium Shading 1 Accent 4"/>
            <w:lsdException w:name="Medium Shading 2 Accent 4"/>
            <w:lsdException w:name="Medium List 1 Accent 4"/>
            <w:lsdException w:name="Medium List 2 Accent 4"/>
            <w:lsdException w:name="Medium Grid 1 Accent 4"/>
            <w:lsdException w:name="Medium Grid 2 Accent 4"/>
            <w:lsdException w:name="Medium Grid 3 Accent 4"/>
            <w:lsdException w:name="Dark List Accent 4"/>
            <w:lsdException w:name="Colorful Shading Accent 4"/>
            <w:lsdException w:name="Colorful List Accent 4"/>
            <w:lsdException w:name="Colorful Grid Accent 4"/>
            <w:lsdException w:name="Light Shading Accent 5"/>
            <w:lsdException w:name="Light List Accent 5"/>
            <w:lsdException w:name="Light Grid Accent 5"/>
            <w:lsdException w:name="Medium Shading 1 Accent 5"/>
            <w:lsdException w:name="Medium Shading 2 Accent 5"/>
            <w:lsdException w:name="Medium List 1 Accent 5"/>
            <w:lsdException w:name="Medium List 2 Accent 5"/>
            <w:lsdException w:name="Medium Grid 1 Accent 5"/>
            <w:lsdException w:name="Medium Grid 2 Accent 5"/>
            <w:lsdException w:name="Medium Grid 3 Accent 5"/>
            <w:lsdException w:name="Dark List Accent 5"/>
            <w:lsdException w:name="Colorful Shading Accent 5"/>
            <w:lsdException w:name="Colorful List Accent 5"/>
            <w:lsdException w:name="Colorful Grid Accent 5"/>
            <w:lsdException w:name="Light Shading Accent 6"/>
            <w:lsdException w:name="Light List Accent 6"/>
            <w:lsdException w:name="Light Grid Accent 6"/>
            <w:lsdException w:name="Medium Shading 1 Accent 6"/>
            <w:lsdException w:name="Medium Shading 2 Accent 6"/>
            <w:lsdException w:name="Medium List 1 Accent 6"/>
            <w:lsdException w:name="Medium List 2 Accent 6"/>
            <w:lsdException w:name="Medium Grid 1 Accent 6"/>
            <w:lsdException w:name="Medium Grid 2 Accent 6"/>
            <w:lsdException w:name="Medium Grid 3 Accent 6"/>
            <w:lsdException w:name="Dark List Accent 6"/>
            <w:lsdException w:name="Colorful Shading Accent 6"/>
            <w:lsdException w:name="Colorful List Accent 6"/>
            <w:lsdException w:name="Colorful Grid Accent 6"/>
            <w:lsdException w:name="Subtle Emphasis"/>
            <w:lsdException w:name="Intense Emphasis"/>
            <w:lsdException w:name="Subtle Reference"/>
            <w:lsdException w:name="Intense Reference"/>
            <w:lsdException w:name="Book Title"/>
            <w:lsdException w:name="Bibliography"/>
            <w:lsdException w:name="TOC Heading"/>
            <w:lsdException w:name="Plain Table 1"/>
            <w:lsdException w:name="Plain Table 2"/>
            <w:lsdException w:name="Plain Table 3"/>
            <w:lsdException w:name="Plain Table 4"/>
            <w:lsdException w:name="Plain Table 5"/>
            <w:lsdException w:name="Grid Table Light"/>
            <w:lsdException w:name="Grid Table 1 Light"/>
            <w:lsdException w:name="Grid Table 2"/>
            <w:lsdException w:name="Grid Table 3"/>
            <w:lsdException w:name="Grid Table 4"/>
            <w:lsdException w:name="Grid Table 5 Dark"/>
            <w:lsdException w:name="Grid Table 6 Colorful"/>
            <w:lsdException w:name="Grid Table 7 Colorful"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 1"/>
            <w:lsdException w:name="Grid Table 2 Accent 1"/>
            <w:lsdException w:name="Grid Table 3 Accent 1"/>
            <w:lsdException w:name="Grid Table 4 Accent 1"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 1"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 1"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 1"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 2"/>
            <w:lsdException w:name="Grid Table 2 Accent 2"/>
            <w:lsdException w:name="Grid Table 3 Accent 2"/>
            <w:lsdException w:name="Grid Table 4 Accent 2"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 2"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 2"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 2"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 3"/>
            <w:lsdException w:name="Grid Table 2 Accent 3"/>
            <w:lsdException w:name="Grid Table 3 Accent 3"/>
            <w:lsdException w:name="Grid Table 4 Accent 3"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 3"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 3"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 3"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 4"/>
            <w:lsdException w:name="Grid Table 2 Accent 4"/>
            <w:lsdException w:name="Grid Table 3 Accent 4"/>
            <w:lsdException w:name="Grid Table 4 Accent 4"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 4"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 4"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 4"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 5"/>
            <w:lsdException w:name="Grid Table 2 Accent 5"/>
            <w:lsdException w:name="Grid Table 3 Accent 5"/>
            <w:lsdException w:name="Grid Table 4 Accent 5"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 5"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 5"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 5"/>
            <w:lsdException w:name="Grid Table 1 Light Accent 6"/>
            <w:lsdException w:name="Grid Table 2 Accent 6"/>
            <w:lsdException w:name="Grid Table 3 Accent 6"/>
            <w:lsdException w:name="Grid Table 4 Accent 6"/>
            <w:lsdException w:name="Grid Table 5 Dark Accent 6"/>
            <w:lsdException w:name="Grid Table 6 Colorful Accent 6"/>
            <w:lsdException w:name="Grid Table 7 Colorful Accent 6"/>
            <w:lsdException w:name="List Table 1 Light"/>
            <w:lsdException w:name="List Table 2"/>
            <w:lsdException w:name="List Table 3"/>
            <w:lsdException w:name="List Table 4"/>
            <w:lsdException w:name="List Table 5 Dark"/>
            <w:lsdException w:name="List Table 6 Colorful"/>
            <w:lsdException w:name="List Table 7 Colorful"/>
            <w:lsdException w:name="List Table 1 Light Accent 1"/>
            <w:lsdException w:name="List Table 2 Accent 1"/>
            <w:lsdException w:name="List Table 3 Accent 1"/>
            <w:lsdException w:name="List Table 4 Accent 1"/>
            <w:lsdException w:name="List Table 5 Dark Accent 1"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 1"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 1"/>
            <w:lsdException w:name="List Table 1 Light Accent 2"/>
            <w:lsdException w:name="List Table 2 Accent 2"/>
            <w:lsdException w:name="List Table 3 Accent 2"/>
            <w:lsdException w:name="List Table 4 Accent 2"/>
            <w:lsdException w:name="List Table 5 Dark Accent 2"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 2"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 2"/>
            <w:lsdException w:name="List Table 1 Light Accent 3"/>
            <w:lsdException w:name="List Table 2 Accent 3"/>
            <w:lsdException w:name="List Table 3 Accent 3"/>
            <w:lsdException w:name="List Table 4 Accent 3"/>
            <w:lsdException w:name="List Table 5 Dark Accent 3"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 3"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 3"/>
            <w:lsdException w:name="List Table 1 Light Accent 4"/>
            <w:lsdException w:name="List Table 2 Accent 4"/>
            <w:lsdException w:name="List Table 3 Accent 4"/>
            <w:lsdException w:name="List Table 4 Accent 4"/>
            <w:lsdException w:name="List Table 5 Dark Accent 4"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 4"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 4"/>
            <w:lsdException w:name="List Table 1 Light Accent 5"/>
            <w:lsdException w:name="List Table 2 Accent 5"/>
            <w:lsdException w:name="List Table 3 Accent 5"/>
            <w:lsdException w:name="List Table 4 Accent 5"/>
            <w:lsdException w:name="List Table 5 Dark Accent 5"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 5"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 5"/>
            <w:lsdException w:name="List Table 1 Light Accent 6"/>
            <w:lsdException w:name="List Table 2 Accent 6"/>
            <w:lsdException w:name="List Table 3 Accent 6"/>
            <w:lsdException w:name="List Table 4 Accent 6"/>
            <w:lsdException w:name="List Table 5 Dark Accent 6"/>
            <w:lsdException w:name="List Table 6 Colorful Accent 6"/>
            <w:lsdException w:name="List Table 7 Colorful Accent 6"/>
        </w:latentStyles>
        <w:style w:type="paragraph" w:default="on" w:styleId="a">
            <w:name w:val="Normal"/>
            <wx:uiName wx:val="正文"/>
            <w:pPr>
                <w:widowControl w:val="off"/>
                <w:jc w:val="both"/>
            </w:pPr>
            <w:rPr>
                <wx:font wx:val="等线"/>
                <w:kern w:val="2"/>
                <w:sz w:val="21"/>
                <w:sz-cs w:val="22"/>
                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
            </w:rPr>
        </w:style>
        <w:style w:type="character" w:default="on" w:styleId="a0">
            <w:name w:val="Default Paragraph Font"/>
            <wx:uiName wx:val="默认段落字体"/>
        </w:style>
        <w:style w:type="table" w:default="on" w:styleId="a1">
            <w:name w:val="Normal Table"/>
            <wx:uiName wx:val="普通表格"/>
            <w:rPr>
                <wx:font wx:val="等线"/>
                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
            </w:rPr>
            <w:tblPr>
                <w:tblInd w:w="0" w:type="dxa"/>
                <w:tblCellMar>
                    <w:top w:w="0" w:type="dxa"/>
                    <w:left w:w="108" w:type="dxa"/>
                    <w:bottom w:w="0" w:type="dxa"/>
                    <w:right w:w="108" w:type="dxa"/>
                </w:tblCellMar>
            </w:tblPr>
        </w:style>
        <w:style w:type="list" w:default="on" w:styleId="a2">
            <w:name w:val="No List"/>
            <wx:uiName wx:val="无列表"/>
        </w:style>
        <w:style w:type="table" w:styleId="a3">
            <w:name w:val="Table Grid"/>
            <wx:uiName wx:val="网格型"/>
            <w:basedOn w:val="a1"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <wx:font wx:val="等线"/>
            </w:rPr>
            <w:tblPr>
                <w:tblBorders>
                    <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                </w:tblBorders>
            </w:tblPr>
        </w:style>
        <w:style w:type="character" w:styleId="a4">
            <w:name w:val="annotation reference"/>
            <wx:uiName wx:val="批注引用"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <w:sz w:val="21"/>
                <w:sz-cs w:val="21"/>
            </w:rPr>
        </w:style>
        <w:style w:type="paragraph" w:styleId="a5">
            <w:name w:val="annotation text"/>
            <wx:uiName wx:val="批注文字"/>
            <w:basedOn w:val="a"/>
            <w:link w:val="a6"/>
            <w:rsid w:val="00B62005"/>
            <w:pPr>
                <w:jc w:val="left"/>
            </w:pPr>
            <w:rPr>
                <wx:font wx:val="等线"/>
            </w:rPr>
        </w:style>
        <w:style w:type="character" w:styleId="a6">
            <w:name w:val="批注文字 字符"/>
            <w:basedOn w:val="a0"/>
            <w:link w:val="a5"/>
            <w:rsid w:val="00B62005"/>
        </w:style>
        <w:style w:type="paragraph" w:styleId="a7">
            <w:name w:val="annotation subject"/>
            <wx:uiName wx:val="批注主题"/>
            <w:basedOn w:val="a5"/>
            <w:next w:val="a5"/>
            <w:link w:val="a8"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <wx:font wx:val="等线"/>
                <w:b/>
                <w:b-cs/>
            </w:rPr>
        </w:style>
        <w:style w:type="character" w:styleId="a8">
            <w:name w:val="批注主题 字符"/>
            <w:link w:val="a7"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <w:b/>
                <w:b-cs/>
            </w:rPr>
        </w:style>
        <w:style w:type="paragraph" w:styleId="a9">
            <w:name w:val="Balloon Text"/>
            <wx:uiName wx:val="批注框文本"/>
            <w:basedOn w:val="a"/>
            <w:link w:val="aa"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <wx:font wx:val="等线"/>
                <w:sz w:val="18"/>
                <w:sz-cs w:val="18"/>
            </w:rPr>
        </w:style>
        <w:style w:type="character" w:styleId="aa">
            <w:name w:val="批注框文本 字符"/>
            <w:link w:val="a9"/>
            <w:rsid w:val="00B62005"/>
            <w:rPr>
                <w:sz w:val="18"/>
                <w:sz-cs w:val="18"/>
            </w:rPr>
        </w:style>
    </w:styles>
    <w:shapeDefaults>
        <o:shapedefaults v:ext="edit" spidmax="1026"/>
        <o:shapelayout v:ext="edit">
            <o:idmap v:ext="edit" data="1"/>
        </o:shapelayout>
    </w:shapeDefaults>
    <w:docPr>
        <w:view w:val="print"/>
        <w:zoom w:percent="100"/>
        <w:doNotEmbedSystemFonts/>
        <w:bordersDontSurroundHeader/>
        <w:bordersDontSurroundFooter/>
        <w:defaultTabStop w:val="420"/>
        <w:drawingGridVerticalSpacing w:val="156"/>
        <w:displayHorizontalDrawingGridEvery w:val="0"/>
        <w:displayVerticalDrawingGridEvery w:val="2"/>
        <w:punctuationKerning/>
        <w:characterSpacingControl w:val="CompressPunctuation"/>
        <w:optimizeForBrowser/>
        <w:allowPNG/>
        <w:validateAgainstSchema/>
        <w:saveInvalidXML w:val="off"/>
        <w:ignoreMixedContent w:val="off"/>
        <w:alwaysShowPlaceholderText w:val="off"/>
        <w:compat>
            <w:spaceForUL/>
            <w:balanceSingleByteDoubleByteWidth/>
            <w:doNotLeaveBackslashAlone/>
            <w:ulTrailSpace/>
            <w:doNotExpandShiftReturn/>
            <w:adjustLineHeightInTable/>
            <w:breakWrappedTables/>
            <w:snapToGridInCell/>
            <w:wrapTextWithPunct/>
            <w:useAsianBreakRules/>
            <w:dontGrowAutofit/>
            <w:useFELayout/>
        </w:compat>
        <wsp:rsids>
            <wsp:rsidRoot wsp:val="00B62005"/>
            <wsp:rsid wsp:val="002B098C"/>
            <wsp:rsid wsp:val="00335F0E"/>
            <wsp:rsid wsp:val="00510709"/>
            <wsp:rsid wsp:val="008C605D"/>
            <wsp:rsid wsp:val="00B62005"/>
        </wsp:rsids>
    </w:docPr>
    <w:body>
        <wx:sect>
            <w:p wsp:rsidR="008C605D" wsp:rsidRDefault="00335F0E" wsp:rsidP="00B62005">
                <w:pPr>
                    <w:jc w:val="center"/>
                    <w:rPr>
                        <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                        <wx:font wx:val="微软雅黑"/>
                        <w:b/>
                        <w:sz w:val="44"/>
                        <w:sz-cs w:val="44"/>
                    </w:rPr>
                </w:pPr>
                <w:r wsp:rsidR="002B098C">
                    <w:rPr>
                        <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
                        <wx:font wx:val="微软雅黑"/>
                        <w:b/>
                        <w:sz w:val="44"/>
                        <w:sz-cs w:val="44"/>
                    </w:rPr>
                    <w:t>${name}简介</w:t>
                </w:r>
            </w:p>
            <w:tbl>
                <w:tblPr>
                    <w:tblW w:w="9072" w:type="dxa"/>
                    <w:jc w:val="center"/>
                    <w:tblBorders>
                        <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                        <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                        <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                        <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                        <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                        <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
                    </w:tblBorders>
                    <w:tblLook w:val="04A0"/>
                </w:tblPr>
                <w:tblGrid>
                    <w:gridCol w:w="1855"/>
                    <w:gridCol w:w="3100"/>
                    <w:gridCol w:w="1849"/>
                    <w:gridCol w:w="2268"/>
                </w:tblGrid>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>公司名称</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${name}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>成立时间</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="3100" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${createTime}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1849" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>创始人</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="2268" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${createUser}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>公司地址</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${dist}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>经营范围</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${range}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>网址</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${webUrl}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00510709" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00B62005" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>简介</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>${about}</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>
                </w:tr>
                <w:tr wsp:rsidR="00335F0E" wsp:rsidRPr="00510709" wsp:rsidTr="00510709">
                    <w:trPr>
                        <w:trHeight w:val="567"/>
                        <w:jc w:val="center"/>
                    </w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="1855" w:type="dxa"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <w:p wsp:rsidR="00335F0E" wsp:rsidRPr="00510709" wsp:rsidRDefault="00335F0E" wsp:rsidP="00510709">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00510709">
                                <w:rPr>
                                    <w:rFonts w:ascii="宋体" w:fareast="宋体" w:h-ansi="宋体" w:hint="fareast"/>
                                    <wx:font wx:val="宋体"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:t>介绍图片</w:t>
                            </w:r>
                        </w:p>
                    </w:tc>


                    <w:tc>
                        <w:tcPr>
                            <w:tcW w:w="7217" w:type="dxa"/>
                            <w:gridSpan w:val="3"/>
                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                            <w:vAlign w:val="center"/>
                        </w:tcPr>
                        <#if image?exists>
                        <#list image as guo>
                        <w:p wsp:rsidR="00335F0E" wsp:rsidRPr="00492EB2" wsp:rsidRDefault="00492EB2" wsp:rsidP="00492EB2">
                            <w:pPr>
                                <w:jc w:val="center"/>
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                            </w:pPr>
                            <w:r wsp:rsidRPr="00492EB2">
                                <w:rPr>
                                    <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                                    <wx:font wx:val="微软雅黑"/>
                                    <w:b/>
                                    <w:noProof/>
                                    <w:sz w:val="24"/>
                                    <w:sz-cs w:val="24"/>
                                </w:rPr>
                                <w:pict>
                                    <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
                                        <v:stroke joinstyle="miter"/>
                                        <v:formulas>
                                            <v:f eqn="if lineDrawn pixelLineWidth 0"/>
                                            <v:f eqn="sum @0 1 0"/>
                                            <v:f eqn="sum 0 0 @1"/>
                                            <v:f eqn="prod @2 1 2"/>
                                            <v:f eqn="prod @3 21600 pixelWidth"/>
                                            <v:f eqn="prod @3 21600 pixelHeight"/>
                                            <v:f eqn="sum @0 0 1"/>
                                            <v:f eqn="prod @6 1 2"/>
                                            <v:f eqn="prod @7 21600 pixelWidth"/>
                                            <v:f eqn="sum @8 21600 0"/>
                                            <v:f eqn="prod @7 21600 pixelHeight"/>
                                            <v:f eqn="sum @10 21600 0"/>
                                        </v:formulas>
                                        <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
                                        <o:lock v:ext="edit" aspectratio="t"/>
                                    </v:shapetype>
                                    <w:binData w:name="${"wordml://0"+guo_index+3+"00000"+guo_index+1+".png"}" xml:space="preserve">
${guo.image}</w:binData>
                                    <v:shape id="图片 3" o:spid="_x0000_i1025" type="#_x0000_t75" style="width:250pt;height:130pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="${"wordml://0"+guo_index+3+"00000"+guo_index+1+".png"}"   o:title=""/></v:shape>
                                </w:pict>
                            </w:r>
                        </w:p>
                        </#list>
                        </#if>
                    </w:tc>


                </w:tr>
            </w:tbl>
            <w:p wsp:rsidR="00B62005" wsp:rsidRPr="00B62005" wsp:rsidRDefault="00B62005" wsp:rsidP="00B62005">
                <w:pPr>
                    <w:jc w:val="center"/>
                    <w:rPr>
                        <w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
                        <wx:font wx:val="微软雅黑"/>
                        <w:b/>
                        <w:sz w:val="44"/>
                        <w:sz-cs w:val="44"/>
                    </w:rPr>
                </w:pPr>
            </w:p>
            <w:sectPr wsp:rsidR="00B62005" wsp:rsidRPr="00B62005">
                <w:pgSz w:w="11906" w:h="16838"/>
                <w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
                <w:cols w:space="425"/>
                <w:docGrid w:type="lines" w:line-pitch="312"/>
            </w:sectPr>
        </wx:sect>
    </w:body>
</w:wordDocument>

相关文章

微信公众号

最新文章

更多