wordpress 视频站模板下载,商城网站建设行业现状,做烘培的网站有哪些,o2o信息类平台有哪些首先用office建一个word文档 参数写自己查询出来的字段#xff0c;我在这里房里图片是方便找到位置替换为64位编码 模板创建好之后#xff0c;另存为Word 2003 XML文档(*.xml) 存储为别的可能会报错#xff0c;我只用这一种 存储为xml之后千万不要用word打开#xff0c;最…首先用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: 100MBapplication-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_filespom
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.1.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.lxl/groupIdartifactIdmybatisplus/artifactIdversion0.0.1-SNAPSHOT/versionnamemybatisplus/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.3.1.tmp/version/dependencydependencygroupIdorg.postgresql/groupIdartifactIdpostgresql/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.28/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!-- fastjson --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.58/version/dependency!--io流转换--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency!--添加本地的jacob.jar包 --dependencygroupIdjacob/groupIdartifactIdjacob/artifactIdversion1.19/version/dependency!--word转pdf--dependencygroupIde-iceblue/groupIdartifactIdspire.doc.free/artifactIdversion3.9.0/version/dependency!--io流转换--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency/dependenciesbuildfinalNamemanage-application/finalNameresourcesresourcedirectorysrc/main/resources/directoryincludesinclude*/includeinclude*/*/include/includesfilteringtrue/filtering/resourceresourcedirectoryrc/main/resources/directoryincludesinclude**/*.xml/include/includes/resourceresourcedirectorysrc/main/resources/directoryincludesinclude**/*.ftl/include/includes/resource/resources/build
/projectutils
这里我先把工具类放在上面是为了防止下面类里面数据会被错
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 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进制字符串*/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(ListObject xAxisDataList, ListObject 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(ListObject legendDataList, ListObject 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, MapString, 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 数组输出流缓冲区容量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);}/*** 文件删除方法*/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的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(删除目录下所有文件);flagtrue;} else {//删除file.delete();
// System.err.println(删除文件夹里面的文件);flagtrue;}}}//删除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 realPathfilePath;//项目路径下你存放文件的地方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;/***
* pTitle: ftl模板文件转成word文件下载/p
* pDescription: /p
* pCompany: 常州培涵信息科技有限公司/p
* p使用说明:
* 1.对于简单文件下载 只需要在map里面put
* 2.对于附属图片的需要调用makeImagePathToBASE64Encoder进行编码
* 3.对于循环需要使用ListObject 此处Object为业务对象
* /p*/
Component
public class FtlToWord {private static Configuration configuration null;private static MapString, 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 HashMapString, 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;filenamedownloadName.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 MapString, Object convertJsonStrToMap(String jsonStr){MapString, Object map JSON.parseObject(jsonStr,new TypeReferenceMapString, 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(patternnull || .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 blocke.printStackTrace();}return date;}/*** 获取timestamp时间戳*/public static Timestamp getTimestamp(String pattern) {if(patternnull || .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(patternnull || .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 {Autowiredprivate CompanyService companyService;// 新增方案与附件修改方案与附件根据uuid判断PostMapping(/insertCompany)public AjaxObj insertProject(String info, HttpServletRequest request) {MapString, 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 {TableIdprivate 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 {TableIdprivate 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 BaseMapperCompany {// 新增公司void insertCompany(MapString,Object map);// 新增附件void insertCompanyAttach(MapString,Object map);// 根据公司id获取到详情Company selectCompany(Param(uuid)String uuid);// 根据公司id获取到相关图片ListMapString, 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(MapString,Object info, HttpServletRequest request);// 导出wordvoid 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 {Autowiredprivate CompanyMapper companyMapper;Value(${uploadFilePath})private String uploadFilePath;Overridepublic void insertCompanyAndAttach(MapString, Object info, HttpServletRequest request) {
// 新增项目与文件info.put(uuid, CommUtils.getUUID());String projId info.get(uuid) ;// 项目基本信息入库companyMapper.insertCompany(info);// 处理文件的mapMapString, Object map new HashMap();//处理附件ListMultipartFile 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);MapString, Object projectBaseInfo JSON.parseObject(JSON.toJSONString(company), Map.class);// 2.根据公司id获取到相关图片ListMapString, Object list companyMapper.selectCompanyAttach(uuid);// 3.存储到图片的路径集合ListWordVo image new ArrayList();// 4.循环获取for (int i 0; i list.size(); i) {WordVo docnew WordVo();String attach_path list.get(i).get(attach_path) ;String replace attach_path.replace(\\, \\);try {doc.setImage(FtlToWord.makeImagePathToBASE64Encoder(uploadFilePath File.separatorlist.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
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 version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.cao.ftlword.mapper.CompanyMapperinsert idinsertCompanyinsert into t_company(uuid,name,web_url,create_user,create_time,dist,range,about)values(#{uuid},#{name},#{webUrl},#{createUser},#{createTime},#{dist},#{range},#{about})/insertinsert idinsertCompanyAttachinsert into t_company_attach(uuid,attach_path,com_id)values(#{uuid},#{attach_path},#{comId})/insertselect idselectCompany resultTypecom.cao.ftlword.entity.Companyselect * from t_company where uuid#{uuid}/selectselect idselectCompanyAttach resultTypemapselect * from t_company_attach where com_id#{uuid}/select/mappertemplates
简介.ftl #setting classic_compatibletrue 参数为空则不会报错
?xml version1.0 encodingUTF-8 standaloneyes?
?mso-application progidWord.Document?
#setting classic_compatibletrue
w:wordDocumentxmlns:amlhttp://schemas.microsoft.com/aml/2001/corexmlns:wpchttp://schemas.microsoft.com/office/word/2010/wordprocessingCanvasxmlns:cxhttp://schemas.microsoft.com/office/drawing/2014/chartexxmlns:dtuuid:C2F41010-65B3-11d1-A29F-00AA00C14882xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:ourn:schemas-microsoft-com:office:officexmlns:vurn:schemas-microsoft-com:vmlxmlns:w10urn:schemas-microsoft-com:office:wordxmlns:whttp://schemas.microsoft.com/office/word/2003/wordmlxmlns:wxhttp://schemas.microsoft.com/office/word/2003/auxHintxmlns:wnehttp://schemas.microsoft.com/office/word/2006/wordmlxmlns:wsphttp://schemas.microsoft.com/office/word/2003/wordml/sp2xmlns:slhttp://schemas.microsoft.com/schemaLibrary/2003/core w:macrosPresentno w:embeddedObjPresentno w:ocxPresentno xml:spacepreservew:ignoreSubtree w:valhttp://schemas.microsoft.com/office/word/2003/wordml/sp2/o:DocumentPropertieso:Authorkris/o:Authoro:LastAuthorkris/o:LastAuthoro:Revision2/o:Revisiono:TotalTime1/o:TotalTimeo:Created2021-03-25T06:36:00Z/o:Createdo:LastSaved2021-03-25T06:36:00Z/o:LastSavedo:Pages1/o:Pageso:Words19/o:Wordso:Characters111/o:Characterso:Lines1/o:Lineso:Paragraphs1/o:Paragraphso:CharactersWithSpaces129/o:CharactersWithSpaceso:Version16/o:Version/o:DocumentPropertiesw:fontsw:defaultFonts w:ascii等线 w:fareast等线 w:h-ansi等线 w:csTimes New Roman/w:font w:nameTimes New Romanw:panose-1 w:val02020603050405020304/w:charset w:val00/w:family w:valRoman/w:pitch w:valvariable/w:sig w:usb-0E0002EFF w:usb-1C000785B w:usb-200000009 w:usb-300000000 w:csb-0000001FF w:csb-100000000//w:fontw:font w:name宋体w:altName w:valSimSun/w:panose-1 w:val02010600030101010101/w:charset w:val86/w:family w:valauto/w:pitch w:valvariable/w:sig w:usb-000000003 w:usb-1288F0000 w:usb-200000016 w:usb-300000000 w:csb-000040001 w:csb-100000000//w:fontw:font w:name宋体w:altName w:valSimSun/w:panose-1 w:val02010600030101010101/w:charset w:val86/w:family w:valauto/w:pitch w:valvariable/w:sig w:usb-000000003 w:usb-1288F0000 w:usb-200000016 w:usb-300000000 w:csb-000040001 w:csb-100000000//w:fontw:font w:name等线w:altName w:valDengXian/w:panose-1 w:val02010600030101010101/w:charset w:val86/w:family w:valauto/w:pitch w:valvariable/w:sig w:usb-0A00002BF w:usb-138CF7CFA w:usb-200000016 w:usb-300000000 w:csb-00004000F w:csb-100000000//w:fontw:font w:name微软雅黑w:panose-1 w:val020B0503020204020204/w:charset w:val86/w:family w:valSwiss/w:pitch w:valvariable/w:sig w:usb-080000287 w:usb-12ACF3C50 w:usb-200000016 w:usb-300000000 w:csb-00004001F w:csb-100000000//w:fontw:font w:name宋体w:panose-1 w:val02010600030101010101/w:charset w:val86/w:family w:valauto/w:pitch w:valvariable/w:sig w:usb-000000003 w:usb-1288F0000 w:usb-200000016 w:usb-300000000 w:csb-000040001 w:csb-100000000//w:fontw:font w:name微软雅黑w:charset w:val86/w:family w:valSwiss/w:pitch w:valvariable/w:sig w:usb-080000287 w:usb-12ACF3C50 w:usb-200000016 w:usb-300000000 w:csb-00004001F w:csb-100000000//w:fontw:font w:name等线w:panose-1 w:val02010600030101010101/w:charset w:val86/w:family w:valauto/w:pitch w:valvariable/w:sig w:usb-0A00002BF w:usb-138CF7CFA w:usb-200000016 w:usb-300000000 w:csb-00004000F w:csb-100000000//w:font/w:fontsw:stylesw:versionOfBuiltInStylenames w:val7/w:latentStyles w:defLockedStateoff w:latentStyleCount371w:lsdException w:nameNormal/w:lsdException w:nameheading 1/w:lsdException w:nameheading 2/w:lsdException w:nameheading 3/w:lsdException w:nameheading 4/w:lsdException w:nameheading 5/w:lsdException w:nameheading 6/w:lsdException w:nameheading 7/w:lsdException w:nameheading 8/w:lsdException w:nameheading 9/w:lsdException w:nameindex 1/w:lsdException w:nameindex 2/w:lsdException w:nameindex 3/w:lsdException w:nameindex 4/w:lsdException w:nameindex 5/w:lsdException w:nameindex 6/w:lsdException w:nameindex 7/w:lsdException w:nameindex 8/w:lsdException w:nameindex 9/w:lsdException w:nametoc 1/w:lsdException w:nametoc 2/w:lsdException w:nametoc 3/w:lsdException w:nametoc 4/w:lsdException w:nametoc 5/w:lsdException w:nametoc 6/w:lsdException w:nametoc 7/w:lsdException w:nametoc 8/w:lsdException w:nametoc 9/w:lsdException w:nameNormal Indent/w:lsdException w:namefootnote text/w:lsdException w:nameannotation text/w:lsdException w:nameheader/w:lsdException w:namefooter/w:lsdException w:nameindex heading/w:lsdException w:namecaption/w:lsdException w:nametable of figures/w:lsdException w:nameenvelope address/w:lsdException w:nameenvelope return/w:lsdException w:namefootnote reference/w:lsdException w:nameannotation reference/w:lsdException w:nameline number/w:lsdException w:namepage number/w:lsdException w:nameendnote reference/w:lsdException w:nameendnote text/w:lsdException w:nametable of authorities/w:lsdException w:namemacro/w:lsdException w:nametoa heading/w:lsdException w:nameList/w:lsdException w:nameList Bullet/w:lsdException w:nameList Number/w:lsdException w:nameList 2/w:lsdException w:nameList 3/w:lsdException w:nameList 4/w:lsdException w:nameList 5/w:lsdException w:nameList Bullet 2/w:lsdException w:nameList Bullet 3/w:lsdException w:nameList Bullet 4/w:lsdException w:nameList Bullet 5/w:lsdException w:nameList Number 2/w:lsdException w:nameList Number 3/w:lsdException w:nameList Number 4/w:lsdException w:nameList Number 5/w:lsdException w:nameTitle/w:lsdException w:nameClosing/w:lsdException w:nameSignature/w:lsdException w:nameDefault Paragraph Font/w:lsdException w:nameBody Text/w:lsdException w:nameBody Text Indent/w:lsdException w:nameList Continue/w:lsdException w:nameList Continue 2/w:lsdException w:nameList Continue 3/w:lsdException w:nameList Continue 4/w:lsdException w:nameList Continue 5/w:lsdException w:nameMessage Header/w:lsdException w:nameSubtitle/w:lsdException w:nameSalutation/w:lsdException w:nameDate/w:lsdException w:nameBody Text First Indent/w:lsdException w:nameBody Text First Indent 2/w:lsdException w:nameNote Heading/w:lsdException w:nameBody Text 2/w:lsdException w:nameBody Text 3/w:lsdException w:nameBody Text Indent 2/w:lsdException w:nameBody Text Indent 3/w:lsdException w:nameBlock Text/w:lsdException w:nameHyperlink/w:lsdException w:nameFollowedHyperlink/w:lsdException w:nameStrong/w:lsdException w:nameEmphasis/w:lsdException w:nameDocument Map/w:lsdException w:namePlain Text/w:lsdException w:nameE-mail Signature/w:lsdException w:nameHTML Top of Form/w:lsdException w:nameHTML Bottom of Form/w:lsdException w:nameNormal (Web)/w:lsdException w:nameHTML Acronym/w:lsdException w:nameHTML Address/w:lsdException w:nameHTML Cite/w:lsdException w:nameHTML Code/w:lsdException w:nameHTML Definition/w:lsdException w:nameHTML Keyboard/w:lsdException w:nameHTML Preformatted/w:lsdException w:nameHTML Sample/w:lsdException w:nameHTML Typewriter/w:lsdException w:nameHTML Variable/w:lsdException w:nameNormal Table/w:lsdException w:nameannotation subject/w:lsdException w:nameNo List/w:lsdException w:nameOutline List 1/w:lsdException w:nameOutline List 2/w:lsdException w:nameOutline List 3/w:lsdException w:nameTable Simple 1/w:lsdException w:nameTable Simple 2/w:lsdException w:nameTable Simple 3/w:lsdException w:nameTable Classic 1/w:lsdException w:nameTable Classic 2/w:lsdException w:nameTable Classic 3/w:lsdException w:nameTable Classic 4/w:lsdException w:nameTable Colorful 1/w:lsdException w:nameTable Colorful 2/w:lsdException w:nameTable Colorful 3/w:lsdException w:nameTable Columns 1/w:lsdException w:nameTable Columns 2/w:lsdException w:nameTable Columns 3/w:lsdException w:nameTable Columns 4/w:lsdException w:nameTable Columns 5/w:lsdException w:nameTable Grid 1/w:lsdException w:nameTable Grid 2/w:lsdException w:nameTable Grid 3/w:lsdException w:nameTable Grid 4/w:lsdException w:nameTable Grid 5/w:lsdException w:nameTable Grid 6/w:lsdException w:nameTable Grid 7/w:lsdException w:nameTable Grid 8/w:lsdException w:nameTable List 1/w:lsdException w:nameTable List 2/w:lsdException w:nameTable List 3/w:lsdException w:nameTable List 4/w:lsdException w:nameTable List 5/w:lsdException w:nameTable List 6/w:lsdException w:nameTable List 7/w:lsdException w:nameTable List 8/w:lsdException w:nameTable 3D effects 1/w:lsdException w:nameTable 3D effects 2/w:lsdException w:nameTable 3D effects 3/w:lsdException w:nameTable Contemporary/w:lsdException w:nameTable Elegant/w:lsdException w:nameTable Professional/w:lsdException w:nameTable Subtle 1/w:lsdException w:nameTable Subtle 2/w:lsdException w:nameTable Web 1/w:lsdException w:nameTable Web 2/w:lsdException w:nameTable Web 3/w:lsdException w:nameBalloon Text/w:lsdException w:nameTable Grid/w:lsdException w:nameTable Theme/w:lsdException w:namePlaceholder Text/w:lsdException w:nameNo Spacing/w:lsdException w:nameLight Shading/w:lsdException w:nameLight List/w:lsdException w:nameLight Grid/w:lsdException w:nameMedium Shading 1/w:lsdException w:nameMedium Shading 2/w:lsdException w:nameMedium List 1/w:lsdException w:nameMedium List 2/w:lsdException w:nameMedium Grid 1/w:lsdException w:nameMedium Grid 2/w:lsdException w:nameMedium Grid 3/w:lsdException w:nameDark List/w:lsdException w:nameColorful Shading/w:lsdException w:nameColorful List/w:lsdException w:nameColorful Grid/w:lsdException w:nameLight Shading Accent 1/w:lsdException w:nameLight List Accent 1/w:lsdException w:nameLight Grid Accent 1/w:lsdException w:nameMedium Shading 1 Accent 1/w:lsdException w:nameMedium Shading 2 Accent 1/w:lsdException w:nameMedium List 1 Accent 1/w:lsdException w:nameRevision/w:lsdException w:nameList Paragraph/w:lsdException w:nameQuote/w:lsdException w:nameIntense Quote/w:lsdException w:nameMedium List 2 Accent 1/w:lsdException w:nameMedium Grid 1 Accent 1/w:lsdException w:nameMedium Grid 2 Accent 1/w:lsdException w:nameMedium Grid 3 Accent 1/w:lsdException w:nameDark List Accent 1/w:lsdException w:nameColorful Shading Accent 1/w:lsdException w:nameColorful List Accent 1/w:lsdException w:nameColorful Grid Accent 1/w:lsdException w:nameLight Shading Accent 2/w:lsdException w:nameLight List Accent 2/w:lsdException w:nameLight Grid Accent 2/w:lsdException w:nameMedium Shading 1 Accent 2/w:lsdException w:nameMedium Shading 2 Accent 2/w:lsdException w:nameMedium List 1 Accent 2/w:lsdException w:nameMedium List 2 Accent 2/w:lsdException w:nameMedium Grid 1 Accent 2/w:lsdException w:nameMedium Grid 2 Accent 2/w:lsdException w:nameMedium Grid 3 Accent 2/w:lsdException w:nameDark List Accent 2/w:lsdException w:nameColorful Shading Accent 2/w:lsdException w:nameColorful List Accent 2/w:lsdException w:nameColorful Grid Accent 2/w:lsdException w:nameLight Shading Accent 3/w:lsdException w:nameLight List Accent 3/w:lsdException w:nameLight Grid Accent 3/w:lsdException w:nameMedium Shading 1 Accent 3/w:lsdException w:nameMedium Shading 2 Accent 3/w:lsdException w:nameMedium List 1 Accent 3/w:lsdException w:nameMedium List 2 Accent 3/w:lsdException w:nameMedium Grid 1 Accent 3/w:lsdException w:nameMedium Grid 2 Accent 3/w:lsdException w:nameMedium Grid 3 Accent 3/w:lsdException w:nameDark List Accent 3/w:lsdException w:nameColorful Shading Accent 3/w:lsdException w:nameColorful List Accent 3/w:lsdException w:nameColorful Grid Accent 3/w:lsdException w:nameLight Shading Accent 4/w:lsdException w:nameLight List Accent 4/w:lsdException w:nameLight Grid Accent 4/w:lsdException w:nameMedium Shading 1 Accent 4/w:lsdException w:nameMedium Shading 2 Accent 4/w:lsdException w:nameMedium List 1 Accent 4/w:lsdException w:nameMedium List 2 Accent 4/w:lsdException w:nameMedium Grid 1 Accent 4/w:lsdException w:nameMedium Grid 2 Accent 4/w:lsdException w:nameMedium Grid 3 Accent 4/w:lsdException w:nameDark List Accent 4/w:lsdException w:nameColorful Shading Accent 4/w:lsdException w:nameColorful List Accent 4/w:lsdException w:nameColorful Grid Accent 4/w:lsdException w:nameLight Shading Accent 5/w:lsdException w:nameLight List Accent 5/w:lsdException w:nameLight Grid Accent 5/w:lsdException w:nameMedium Shading 1 Accent 5/w:lsdException w:nameMedium Shading 2 Accent 5/w:lsdException w:nameMedium List 1 Accent 5/w:lsdException w:nameMedium List 2 Accent 5/w:lsdException w:nameMedium Grid 1 Accent 5/w:lsdException w:nameMedium Grid 2 Accent 5/w:lsdException w:nameMedium Grid 3 Accent 5/w:lsdException w:nameDark List Accent 5/w:lsdException w:nameColorful Shading Accent 5/w:lsdException w:nameColorful List Accent 5/w:lsdException w:nameColorful Grid Accent 5/w:lsdException w:nameLight Shading Accent 6/w:lsdException w:nameLight List Accent 6/w:lsdException w:nameLight Grid Accent 6/w:lsdException w:nameMedium Shading 1 Accent 6/w:lsdException w:nameMedium Shading 2 Accent 6/w:lsdException w:nameMedium List 1 Accent 6/w:lsdException w:nameMedium List 2 Accent 6/w:lsdException w:nameMedium Grid 1 Accent 6/w:lsdException w:nameMedium Grid 2 Accent 6/w:lsdException w:nameMedium Grid 3 Accent 6/w:lsdException w:nameDark List Accent 6/w:lsdException w:nameColorful Shading Accent 6/w:lsdException w:nameColorful List Accent 6/w:lsdException w:nameColorful Grid Accent 6/w:lsdException w:nameSubtle Emphasis/w:lsdException w:nameIntense Emphasis/w:lsdException w:nameSubtle Reference/w:lsdException w:nameIntense Reference/w:lsdException w:nameBook Title/w:lsdException w:nameBibliography/w:lsdException w:nameTOC Heading/w:lsdException w:namePlain Table 1/w:lsdException w:namePlain Table 2/w:lsdException w:namePlain Table 3/w:lsdException w:namePlain Table 4/w:lsdException w:namePlain Table 5/w:lsdException w:nameGrid Table Light/w:lsdException w:nameGrid Table 1 Light/w:lsdException w:nameGrid Table 2/w:lsdException w:nameGrid Table 3/w:lsdException w:nameGrid Table 4/w:lsdException w:nameGrid Table 5 Dark/w:lsdException w:nameGrid Table 6 Colorful/w:lsdException w:nameGrid Table 7 Colorful/w:lsdException w:nameGrid Table 1 Light Accent 1/w:lsdException w:nameGrid Table 2 Accent 1/w:lsdException w:nameGrid Table 3 Accent 1/w:lsdException w:nameGrid Table 4 Accent 1/w:lsdException w:nameGrid Table 5 Dark Accent 1/w:lsdException w:nameGrid Table 6 Colorful Accent 1/w:lsdException w:nameGrid Table 7 Colorful Accent 1/w:lsdException w:nameGrid Table 1 Light Accent 2/w:lsdException w:nameGrid Table 2 Accent 2/w:lsdException w:nameGrid Table 3 Accent 2/w:lsdException w:nameGrid Table 4 Accent 2/w:lsdException w:nameGrid Table 5 Dark Accent 2/w:lsdException w:nameGrid Table 6 Colorful Accent 2/w:lsdException w:nameGrid Table 7 Colorful Accent 2/w:lsdException w:nameGrid Table 1 Light Accent 3/w:lsdException w:nameGrid Table 2 Accent 3/w:lsdException w:nameGrid Table 3 Accent 3/w:lsdException w:nameGrid Table 4 Accent 3/w:lsdException w:nameGrid Table 5 Dark Accent 3/w:lsdException w:nameGrid Table 6 Colorful Accent 3/w:lsdException w:nameGrid Table 7 Colorful Accent 3/w:lsdException w:nameGrid Table 1 Light Accent 4/w:lsdException w:nameGrid Table 2 Accent 4/w:lsdException w:nameGrid Table 3 Accent 4/w:lsdException w:nameGrid Table 4 Accent 4/w:lsdException w:nameGrid Table 5 Dark Accent 4/w:lsdException w:nameGrid Table 6 Colorful Accent 4/w:lsdException w:nameGrid Table 7 Colorful Accent 4/w:lsdException w:nameGrid Table 1 Light Accent 5/w:lsdException w:nameGrid Table 2 Accent 5/w:lsdException w:nameGrid Table 3 Accent 5/w:lsdException w:nameGrid Table 4 Accent 5/w:lsdException w:nameGrid Table 5 Dark Accent 5/w:lsdException w:nameGrid Table 6 Colorful Accent 5/w:lsdException w:nameGrid Table 7 Colorful Accent 5/w:lsdException w:nameGrid Table 1 Light Accent 6/w:lsdException w:nameGrid Table 2 Accent 6/w:lsdException w:nameGrid Table 3 Accent 6/w:lsdException w:nameGrid Table 4 Accent 6/w:lsdException w:nameGrid Table 5 Dark Accent 6/w:lsdException w:nameGrid Table 6 Colorful Accent 6/w:lsdException w:nameGrid Table 7 Colorful Accent 6/w:lsdException w:nameList Table 1 Light/w:lsdException w:nameList Table 2/w:lsdException w:nameList Table 3/w:lsdException w:nameList Table 4/w:lsdException w:nameList Table 5 Dark/w:lsdException w:nameList Table 6 Colorful/w:lsdException w:nameList Table 7 Colorful/w:lsdException w:nameList Table 1 Light Accent 1/w:lsdException w:nameList Table 2 Accent 1/w:lsdException w:nameList Table 3 Accent 1/w:lsdException w:nameList Table 4 Accent 1/w:lsdException w:nameList Table 5 Dark Accent 1/w:lsdException w:nameList Table 6 Colorful Accent 1/w:lsdException w:nameList Table 7 Colorful Accent 1/w:lsdException w:nameList Table 1 Light Accent 2/w:lsdException w:nameList Table 2 Accent 2/w:lsdException w:nameList Table 3 Accent 2/w:lsdException w:nameList Table 4 Accent 2/w:lsdException w:nameList Table 5 Dark Accent 2/w:lsdException w:nameList Table 6 Colorful Accent 2/w:lsdException w:nameList Table 7 Colorful Accent 2/w:lsdException w:nameList Table 1 Light Accent 3/w:lsdException w:nameList Table 2 Accent 3/w:lsdException w:nameList Table 3 Accent 3/w:lsdException w:nameList Table 4 Accent 3/w:lsdException w:nameList Table 5 Dark Accent 3/w:lsdException w:nameList Table 6 Colorful Accent 3/w:lsdException w:nameList Table 7 Colorful Accent 3/w:lsdException w:nameList Table 1 Light Accent 4/w:lsdException w:nameList Table 2 Accent 4/w:lsdException w:nameList Table 3 Accent 4/w:lsdException w:nameList Table 4 Accent 4/w:lsdException w:nameList Table 5 Dark Accent 4/w:lsdException w:nameList Table 6 Colorful Accent 4/w:lsdException w:nameList Table 7 Colorful Accent 4/w:lsdException w:nameList Table 1 Light Accent 5/w:lsdException w:nameList Table 2 Accent 5/w:lsdException w:nameList Table 3 Accent 5/w:lsdException w:nameList Table 4 Accent 5/w:lsdException w:nameList Table 5 Dark Accent 5/w:lsdException w:nameList Table 6 Colorful Accent 5/w:lsdException w:nameList Table 7 Colorful Accent 5/w:lsdException w:nameList Table 1 Light Accent 6/w:lsdException w:nameList Table 2 Accent 6/w:lsdException w:nameList Table 3 Accent 6/w:lsdException w:nameList Table 4 Accent 6/w:lsdException w:nameList Table 5 Dark Accent 6/w:lsdException w:nameList Table 6 Colorful Accent 6/w:lsdException w:nameList Table 7 Colorful Accent 6//w:latentStylesw:style w:typeparagraph w:defaulton w:styleIdaw:name w:valNormal/wx:uiName wx:val正文/w:pPrw:widowControl w:valoff/w:jc w:valboth//w:pPrw:rPrwx:font wx:val等线/w:kern w:val2/w:sz w:val21/w:sz-cs w:val22/w:lang w:valEN-US w:fareastZH-CN w:bidiAR-SA//w:rPr/w:stylew:style w:typecharacter w:defaulton w:styleIda0w:name w:valDefault Paragraph Font/wx:uiName wx:val默认段落字体//w:stylew:style w:typetable w:defaulton w:styleIda1w:name w:valNormal Table/wx:uiName wx:val普通表格/w:rPrwx:font wx:val等线/w:lang w:valEN-US w:fareastZH-CN w:bidiAR-SA//w:rPrw:tblPrw:tblInd w:w0 w:typedxa/w:tblCellMarw:top w:w0 w:typedxa/w:left w:w108 w:typedxa/w:bottom w:w0 w:typedxa/w:right w:w108 w:typedxa//w:tblCellMar/w:tblPr/w:stylew:style w:typelist w:defaulton w:styleIda2w:name w:valNo List/wx:uiName wx:val无列表//w:stylew:style w:typetable w:styleIda3w:name w:valTable Grid/wx:uiName wx:val网格型/w:basedOn w:vala1/w:rsid w:val00B62005/w:rPrwx:font wx:val等线//w:rPrw:tblPrw:tblBordersw:top w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:left w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:bottom w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:right w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:insideH w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:insideV w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto//w:tblBorders/w:tblPr/w:stylew:style w:typecharacter w:styleIda4w:name w:valannotation reference/wx:uiName wx:val批注引用/w:rsid w:val00B62005/w:rPrw:sz w:val21/w:sz-cs w:val21//w:rPr/w:stylew:style w:typeparagraph w:styleIda5w:name w:valannotation text/wx:uiName wx:val批注文字/w:basedOn w:vala/w:link w:vala6/w:rsid w:val00B62005/w:pPrw:jc w:valleft//w:pPrw:rPrwx:font wx:val等线//w:rPr/w:stylew:style w:typecharacter w:styleIda6w:name w:val批注文字 字符/w:basedOn w:vala0/w:link w:vala5/w:rsid w:val00B62005//w:stylew:style w:typeparagraph w:styleIda7w:name w:valannotation subject/wx:uiName wx:val批注主题/w:basedOn w:vala5/w:next w:vala5/w:link w:vala8/w:rsid w:val00B62005/w:rPrwx:font wx:val等线/w:b/w:b-cs//w:rPr/w:stylew:style w:typecharacter w:styleIda8w:name w:val批注主题 字符/w:link w:vala7/w:rsid w:val00B62005/w:rPrw:b/w:b-cs//w:rPr/w:stylew:style w:typeparagraph w:styleIda9w:name w:valBalloon Text/wx:uiName wx:val批注框文本/w:basedOn w:vala/w:link w:valaa/w:rsid w:val00B62005/w:rPrwx:font wx:val等线/w:sz w:val18/w:sz-cs w:val18//w:rPr/w:stylew:style w:typecharacter w:styleIdaaw:name w:val批注框文本 字符/w:link w:vala9/w:rsid w:val00B62005/w:rPrw:sz w:val18/w:sz-cs w:val18//w:rPr/w:style/w:stylesw:shapeDefaultso:shapedefaults v:extedit spidmax1026/o:shapelayout v:extedito:idmap v:extedit data1//o:shapelayout/w:shapeDefaultsw:docPrw:view w:valprint/w:zoom w:percent100/w:doNotEmbedSystemFonts/w:bordersDontSurroundHeader/w:bordersDontSurroundFooter/w:defaultTabStop w:val420/w:drawingGridVerticalSpacing w:val156/w:displayHorizontalDrawingGridEvery w:val0/w:displayVerticalDrawingGridEvery w:val2/w:punctuationKerning/w:characterSpacingControl w:valCompressPunctuation/w:optimizeForBrowser/w:allowPNG/w:validateAgainstSchema/w:saveInvalidXML w:valoff/w:ignoreMixedContent w:valoff/w:alwaysShowPlaceholderText w:valoff/w:compatw:spaceForUL/w:balanceSingleByteDoubleByteWidth/w:doNotLeaveBackslashAlone/w:ulTrailSpace/w:doNotExpandShiftReturn/w:adjustLineHeightInTable/w:breakWrappedTables/w:snapToGridInCell/w:wrapTextWithPunct/w:useAsianBreakRules/w:dontGrowAutofit/w:useFELayout//w:compatwsp:rsidswsp:rsidRoot wsp:val00B62005/wsp:rsid wsp:val002B098C/wsp:rsid wsp:val00335F0E/wsp:rsid wsp:val00510709/wsp:rsid wsp:val008C605D/wsp:rsid wsp:val00B62005//wsp:rsids/w:docPrw:bodywx:sectw:p wsp:rsidR008C605D wsp:rsidRDefault00335F0E wsp:rsidP00B62005w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val44/w:sz-cs w:val44//w:rPr/w:pPrw:r wsp:rsidR002B098Cw:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑 w:hintfareast/wx:font wx:val微软雅黑/w:b/w:sz w:val44/w:sz-cs w:val44//w:rPrw:t${name}简介/w:t/w:r/w:pw:tblw:tblPrw:tblW w:w9072 w:typedxa/w:jc w:valcenter/w:tblBordersw:top w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:left w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:bottom w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:right w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:insideH w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto/w:insideV w:valsingle w:sz4 wx:bdrwidth10 w:space0 w:colorauto//w:tblBordersw:tblLook w:val04A0//w:tblPrw:tblGridw:gridCol w:w1855/w:gridCol w:w3100/w:gridCol w:w1849/w:gridCol w:w2268//w:tblGridw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t公司名称/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${name}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t成立时间/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w3100 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${createTime}/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w1849 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t创始人/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w2268 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${createUser}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t公司地址/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${dist}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t经营范围/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${range}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t网址/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${webUrl}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00510709 wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00B62005 wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t简介/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00B62005 wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t${about}/w:t/w:r/w:p/w:tc/w:trw:tr wsp:rsidR00335F0E wsp:rsidRPr00510709 wsp:rsidTr00510709w:trPrw:trHeight w:val567/w:jc w:valcenter//w:trPrw:tcw:tcPrw:tcW w:w1855 w:typedxa/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPrw:p wsp:rsidR00335F0E wsp:rsidRPr00510709 wsp:rsidRDefault00335F0E wsp:rsidP00510709w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00510709w:rPrw:rFonts w:ascii宋体 w:fareast宋体 w:h-ansi宋体 w:hintfareast/wx:font wx:val宋体/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPrw:t介绍图片/w:t/w:r/w:p/w:tcw:tcw:tcPrw:tcW w:w7217 w:typedxa/w:gridSpan w:val3/w:shd w:valclear w:colorauto w:fillauto/w:vAlign w:valcenter//w:tcPr#if image?exists#list image as guow:p wsp:rsidR00335F0E wsp:rsidRPr00492EB2 wsp:rsidRDefault00492EB2 wsp:rsidP00492EB2w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val24/w:sz-cs w:val24//w:rPr/w:pPrw:r wsp:rsidRPr00492EB2w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:noProof/w:sz w:val24/w:sz-cs w:val24//w:rPrw:pictv:shapetype id_x0000_t75 coordsize21600,21600 o:spt75 o:preferrelativet pathm45l41191195xe filledf strokedfv:stroke joinstylemiter/v:formulasv:f eqnif lineDrawn pixelLineWidth 0/v:f eqnsum 0 1 0/v:f eqnsum 0 0 1/v:f eqnprod 2 1 2/v:f eqnprod 3 21600 pixelWidth/v:f eqnprod 3 21600 pixelHeight/v:f eqnsum 0 0 1/v:f eqnprod 6 1 2/v:f eqnprod 7 21600 pixelWidth/v:f eqnsum 8 21600 0/v:f eqnprod 7 21600 pixelHeight/v:f eqnsum 10 21600 0//v:formulasv:path o:extrusionokf gradientshapeokt o:connecttyperect/o:lock v:extedit aspectratiot//v:shapetypew:binData w:name${wordml://0guo_index300000guo_index1.png} xml:spacepreserve
${guo.image}/w:binDatav:shape id图片 3 o:spid_x0000_i1025 type#_x0000_t75 stylewidth:250pt;height:130pt;visibility:visible;mso-wrap-style:squarev:imagedata src${wordml://0guo_index300000guo_index1.png} o:title//v:shape/w:pict/w:r/w:p/#list/#if/w:tc/w:tr/w:tblw:p wsp:rsidR00B62005 wsp:rsidRPr00B62005 wsp:rsidRDefault00B62005 wsp:rsidP00B62005w:pPrw:jc w:valcenter/w:rPrw:rFonts w:ascii微软雅黑 w:fareast微软雅黑 w:h-ansi微软雅黑/wx:font wx:val微软雅黑/w:b/w:sz w:val44/w:sz-cs w:val44//w:rPr/w:pPr/w:pw:sectPr wsp:rsidR00B62005 wsp:rsidRPr00B62005w:pgSz w:w11906 w:h16838/w:pgMar w:top1440 w:right1800 w:bottom1440 w:left1800 w:header851 w:footer992 w:gutter0/w:cols w:space425/w:docGrid w:typelines w:line-pitch312//w:sectPr/wx:sect/w:body
/w:wordDocument