百度云链接

链接: https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw 提取码: fdhq
https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw
提取码:fdhq

目录

  • 配置文件 yml
  • pom
  • utils
  • controller
  • entity
  • mapper java
  • service
  • impl
  • vo
  • 启动类
  • resources
  • mapper xml
  • templates

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

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

修改后

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

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

application.yml

回到目录

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

application-dev.yml

spring:datasource:url: jdbc:postgresql://localhost:5432/wordusername: postgrespassword: driver-class-name: org.postgresql.Driver
server:port: 8799servlet: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;/*** 消息对象** @author fiver**/
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;}
}
package com.cao.ftlword.utils;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** @param obj* @return*/@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("-", "");}/*** 将指定日期按照指定的格式以字符串的形式进行返回** @param pattern* @param date* @return*/public static String getDate(String pattern, Date date) {SimpleDateFormat format = new SimpleDateFormat(pattern);return format.format(date);}/*** 将当前日期按照 "年-月-日 时:分:秒" 的日期格式以字符串的形式返回** @return*/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());}/*** 下载文件** @param path* @param response*/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 blocke.printStackTrace();}System.out.println("----------file download----------" + path);try {bis.close();fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.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进制字符串** @param src* @return*/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();}/*** 根据文件流判断图片类型** @param fis* @return jpg/png/gif/bmp*/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;}}
}
package com.cao.ftlword.utils;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[]* @param file* @return*/public static byte[] getBytesByFile(File file) {try {//获取输入流FileInputStream fis = new FileInputStream(file);//新的 byte 数组输出流,缓冲区容量1024byteByteArrayOutputStream 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);}/*** 文件删除方法** @param fileAddress* @return*/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;}}}/*** 下载本地文件* @param response* @param filePath* @param encode*/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的utf8fs.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();}}}}
package com.cao.ftlword.utils;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>
* @author zhanghb
* @date 2018年2月2日*/
@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);}}/*** 创建文档* @param dataMap* @param templateName* @return*/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;}/*** 下载文档* @param response* @param dataMap* @param templateName* @param downloadName* @throws IOException*/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;}/*** 下载文档存到本地* @param dataMap* @param templateName* @param downloadName* @throws IOException*/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);}
}
package com.cao.ftlword.utils;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;import java.util.Map;public class JsonUtil {/*** 将json转化成map* @param jsonStr* @return*/public static Map<String, Object> convertJsonStrToMap(String jsonStr){Map<String, Object> map = JSON.parseObject(jsonStr,new TypeReference<Map<String, Object>>(){} );return map;}
}
package com.cao.ftlword.utils;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;}
package com.cao.ftlword.utils;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* @return*/public static String getDate(String pattern) {if(pattern==null || "".equals(pattern))pattern = "yyyy-MM";return new SimpleDateFormat(pattern).format(new Date());}/*** 字符串转成日期* @throws ParseException */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 blocke.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

回到目录

package com.cao.ftlword.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 {@Autowiredprivate 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

回到目录

package com.cao.ftlword.entity;import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;@Data
public class Company {@TableIdprivate String uuid;   // 主键private String name;  // 公司名称private String webUrl;  // 网址private String createUser;  // 创始人private String createTime;  // 成立时间private String dist;  // 公司地址private String range;  // 经营范围private String about;  // 简介
}
package com.cao.ftlword.entity;import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;@Data
public class CompanyAttach {@TableIdprivate String uuid;   // 主键private String attachPath;  // 附件路径private String comId;  // 公司id
}

mapper

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

package com.cao.ftlword.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);// 导出wordvoid wordDownload(String uuid, HttpServletResponse response);
}

impl

回到目录

package com.cao.ftlword.service.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 {@Autowiredprivate CompanyMapper companyMapper;@Value("${uploadFilePath}")private String uploadFilePath;@Overridepublic void insertCompanyAndAttach(Map<String, Object> info, HttpServletRequest request) {
// 新增项目与文件info.put("uuid", CommUtils.getUUID());String projId = info.get("uuid") + "";// 项目基本信息入库companyMapper.insertCompany(info);// 处理文件的mapMap<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);// 上传文件到tomcatFileUtil.uploadFile(file.getBytes(), uploadFilePath + "/word/" + projId + "/" + attachId,fName);}}} catch (Exception e) {e.printStackTrace();}}@Overridepublic void wordDownload(String uuid, HttpServletResponse response) {// 1.根据公司id获取到详情,转化为mapCompany 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);//下载wordString 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

回到目录

package com.cao.ftlword.vo;import lombok.Data;@Data
public class WordVo {private String image;  // 过程图片
}

启动类

回到目录

package com.cao.ftlword;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:wordDocumentxmlns: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>

java通过ftl模板导出word最详细教程相关推荐

  1. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

  2. ftl模板导出word简历

    ftl模板导出 1.新建 word 文档模板 新建 word 文档(muban.doc),编辑该文档作为样板数据文档: 2.将 word 文档另存为 xml 3.将 xml 文档重命名为 ftl 将上 ...

  3. java 用ftl模板生成word时插入多张图片

    前提: 1.知道如何创建ftl模板 2.知道ftl的指令及语法 3.知道如何用java将ftl文件生成word并添加数据 4.知道如何将图片转为base64字符串 内容: 1.在ftl模板中引入多个图 ...

  4. freemarker html 换行,java使用freemarker模板导出word,合并单元格,单元格内换行

    之前使用[XWPFDocument][]动态写入word,XWPFDocument不支持2003,word2003需要用HWPFDocument,HWPFDocument对于动态生成行效果不是很好,所 ...

  5. java使用freemarker模板导出word,合并单元格,单元格内换行

    之前使用XWPFDocument动态写入word,XWPFDocument不支持2003,word2003需要用HWPFDocument,HWPFDocument对于动态生成行效果不是很好,所以使用f ...

  6. java ftl 模板 输出list_java freemarker .ftl模板导出word文档(含文字,List, 图片)

    此处只介绍word模板部分,java代码等请自行百度,都一样. 辅助工具:notepad++,百度在线xml格式化 A.不含遍历的简单处理 不含遍历的简单处理 简单的一个key一个值使用比较简单,主要 ...

  7. java通过freemarker和ftl模板导出word换行问题

    //将 \r\n 替换成 <w:br/> plan.getMemo().replaceAll("\r\n", "<w:br/>"))

  8. ftl模板导出word 带多张图片

    一.生成ftl文件 1.创建word 预先放入图片 2.将word文件另存为.xml文件 3.将xml文件后缀名改为ftl. 4.将ftl文件放入编辑器中生成模板代码 主要代码: 遍历图片 <# ...

  9. java利用poi模板导出word文件

    注意:  doc文件的读取,需要导入poi-scratchpad包: docx文件读取,需要导入poi-ooxml包: 一.引入pom <dependency><groupId> ...

最新文章

  1. 这些Java8官方挖的坑,你踩过几个?
  2. Centos安装图形化界面
  3. 分支定界算法 matlab,分支定界法----整数规划matlab
  4. SecurtCRT连接服务器自动断开
  5. 计算机大赛软件应用与开发,我院学生在2019年中国大学生计算机设计大赛“软件应用与开发”决赛中荣获佳绩...
  6. MySql使用TEXT/BLOB类型的几点注意
  7. 用R进行meta分析(metafor包)
  8. 企业信息化战略规划方法
  9. matlab差分法案例,怎么用matlab实现向前差分法,向后差分法,中心差分法等,最好举个例子,谢谢啦...
  10. IT行业常见职位英语缩写及中文释义
  11. 发票专用驱动sjz_税务局紧急提醒!10月31日前,不能领票,不能勾选!11月1日后,发票开具将大不同!...
  12. jQuery插件库超级好用库
  13. python怎么批量爬取图片_python批量爬取网络图片
  14. qt连接mysql数据库 mac_Mac系统下Qt 4.8编译连接数据库(Oracle,MySql)
  15. 多元函数第六:连续函数(6)Bolzano-Weierstrass 波尔查诺-维尔斯特拉斯定理 聚点与列紧集
  16. 清华集训2017题解
  17. OWOD训练运行教程
  18. SwiftUI 中的水平条形图
  19. linux合并优盘分区工具,mhddfs虚拟存储工具:Linux分区合并利器
  20. 国内航班行李托运尺寸规格要求

热门文章

  1. 公司要新招美女跟我学docker,你来吗?
  2. 记一次线上启动war包 StackOverflowError
  3. 没有躲过的坑--有if就要有else(一定成对)
  4. 在Home Assistant中配置天气信息
  5. 知识点六:jQuery遍历-同胞Siblings(), next(), nextAll()
  6. 西方哲学史 -- 赫拉克利特
  7. 物联网(AIOT)--下一个技术风口
  8. JAVA设计模式--组合模式
  9. dBSPL、dBu、dBV、dBm、dBVU、dBFS等等和分贝有关的名词解析
  10. 程序员应知必会的思维模型之 18 林纳斯定律 (Linus‘s Law)