Java 使用freemarker.jar 生成word文档

直入主题上代码:



import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class WordUtil {
	private static Configuration configuration = new Configuration();

	/**
	 * 
	 * 创建WORD文档
	 * @author YL
	 * @data 2019-2-26下午2:09:30
	 * @param map 保存数据map
	 * @param ftlFile	模板名称带ftl后缀
	 * @param templateFolder 模板保存路径
	 * @param wordpath word文档保存完整路径(文档路径+文档名)
	 */
	public static void exportWord( Map<String, Object> map,String ftlFile,String templateFolder,String wordpath) {
		Template freemarkerTemplate = null;
		File file = null;
		FileInputStream in = null;
        FileOutputStream out = null;
        System.err.println(templateFolder);
		try {
			configuration.setDefaultEncoding("utf-8");
			configuration.setDirectoryForTemplateLoading(new File(templateFolder));
			System.err.println("加载模板路径成功");
		} catch (IOException e) {
			System.err.println("加载模板路径失败");
		}
		
		try {
			freemarkerTemplate = configuration.getTemplate(ftlFile);
			System.err.println("加载模板成功");
		} catch (IOException e) {
			System.err.println("加载模板失败");
		}
		
		//向模板中写入数据,生成临时文件
		file = createDoc(map, freemarkerTemplate);
		
		//向本地写word文档
		try {
			in = new FileInputStream(file);
			
			out = new FileOutputStream(wordpath);
			byte b [] = new byte[1024*8];
			int len = 0;
			while((len=in.read(b))!=-1){
			    out.write(b, 0, len);
			}
			System.err.println("生成word成功");
		} catch (Exception e) {
			System.err.println("生成word失败");
		} finally {
			try {
				if (in != null){
					in.close();
				}
				if (out != null){
					out.close();
				}
				if(file != null){
					file.delete(); // 删除临时文件  
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		
		
	}

	/**
	 * 
	 * @Description: 生成word
	 * @author: YL
	 * @date: 2019-4-10上午9:47:30
	 * @param dataMap
	 * @param template
	 * @return
	 */
	private static File createDoc(Map<?, ?> dataMap, Template template) {
		String name = "test.doc"; //临时文件名称
		File file = new File(name);
		Template temp = template;
		try {
			// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
			Writer wrt = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
			temp.process(dataMap, wrt);
			wrt.close();
			System.err.println("向模板中写入数据成功");
		} catch (Exception ex) {
			System.err.println("向模板中写入数据失败");
			throw new RuntimeException(ex);
		}
		return file;
	}
	


	
	public static void main(String[] args) {
		
		//准备数据
		Map<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("supplier", "1111");//供货商
		dataMap.put("noticeid", "1111");//通知书号
		dataMap.put("projectname", "1111");//项目名称
		dataMap.put("prodname", "1111");//产品类型
		dataMap.put("prodtypeid", "1111");//产品型号
		dataMap.put("arrivaltime", "1111");//到货时间
		dataMap.put("address", "1111");//到货地点
		dataMap.put("prodnum", "1111");//到货数量
		dataMap.put("samplnum","1111");//抽样数量
		dataMap.put("createuserid","1111");//录入人
		dataMap.put("createtime", "1111");//录入时间
		
		
		//jason 格式的数据处理成键值对对象存在list中
		String jsonstr = "{\"标签信息\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"},\"包装外观(裂缝、漏筋、碰伤、蜂窝、麻面、沾皮等)\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"},\"配筋数量\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"},\"长度\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"},\"外径\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"},\"两端壁厚\":{\"path\":\"[/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png,/aqhjwebapp/picture/menu-img1.png]\",\"flag\":\"不合格\",\"reasondesc\":\"不合格1\"}}";
		JSONObject jsonObject = (JSONObject)JSON.parse(jsonstr);
		Map<String, Object> map =jsonObject;
		ArrayList<Attrbution> attrlist = new ArrayList<>();
		for (Entry<String, Object> val : map.entrySet()) {
			String key = val.getKey();//属性名
			JSONObject json =(JSONObject)val.getValue();
			String value = json.getString("flag")+","+json.getString("reasondesc");
			Attrbution attr = new Attrbution();
			attr.setAttrname(key);
			attr.setAttrvalue(value);
			attrlist.add(attr);
		}
		
		//将list 存在map中 模板中取值
		dataMap.put("attrlist", attrlist);
		
		
		
		
		String ftlFile="template.ftl"; //模板
		String templateFolder="D:/wordTemplate"; //模板存放路径
		String wordpath="D:/wordTemplate/test.doc"; //生成的word 存放路径及word文件名
		exportWord(dataMap, ftlFile, templateFolder, wordpath);
		
		
	}


}


class Attrbution {
	/**
	 * Attrbution.java
	 *  解生成word文档用
	 * @company Finedo.cn
	 * @author YL
	 * @date 2019-2-21下午2:15:34
	 * @version V1.0
	 */
	//属性名称   键
	private String attrname;
	//属性对应的合格或者不合格 以及原因字符串   值
	private String attrvalue;

	public String getAttrname() {
		return attrname;
	}

	public void setAttrname(String attrname) {
		this.attrname = attrname;
	}

	public String getAttrvalue() {
		return attrvalue;
	}

	public void setAttrvalue(String attrvalue) {
		this.attrvalue = attrvalue;
	}

}

 

 

freemarker 需要的模板根据自己需要制作,先将模板在Microsoft Office Word中编辑好,包括样式,字体等等,需要动态赋值的地方用***替换,修改完成后另存为,选择保存类型Word 2003 XML 文档(*.xml),保存的文件名不要有中文。用文档编辑器(记事本、notepad等)打开xml文件,将xml文档内容中需要动态赋值的地方(上面用***替换的地方),换成freemarker的标识。也就是Map<String, Object>中的key,如本文中的${projectname}。

如果需要显示的是图片内容,将图片在word中调整好(不需要用***替代),在xml中找到图片的位置(base64处理后的代码)同样用Map<String, Object>中的key替换,图片的value值必须经过base64处理。图片的赋值 “>${key}<”,这尖括号中间不能加任何其他的诸如空格,tab,换行等符号。

如果需要循环,则使用:<#list attrlist as attr>  </#list>  attrlist 是Map<String, Object>中key,值为集合等,attr为自定义的list中的元素变量。

标识替换完之后,模板就弄完了,另存为.ftl后缀文件(本文为template.ftl)放到代码中指定位置即可。注意:一定不要用word打开ftl模板文件,否则xml内容会发生变化,导致前面的工作白做了。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" 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></o:Author>
<o:LastAuthor></o:LastAuthor>
<o:Revision></o:Revision>
<o:TotalTime></o:TotalTime>
<o:Created></o:Created>
<o:LastSaved></o:LastSaved>
<o:Pages></o:Pages>
<o:Words></o:Words>
<o:Characters></o:Characters>
<o:Lines></o:Lines>
<o:Paragraphs></o:Paragraphs>
<o:CharactersWithSpaces></o:CharactersWithSpaces>
<o:Version></o:Version>
</o:DocumentProperties>
<w:fonts>
<w:defaultFonts w:ascii="Calibri" w:fareast="宋体" w:h-ansi="Calibri" 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="Calibri">
<w:panose-1 w:val="020F0502020204030204"/>
<w:charset w:val="00"/>
<w:family w:val="Swiss"/>
<w:pitch w:val="variable"/>
<w:sig w:usb-0="E0002AFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" 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: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="caption"/>
<w:lsdException w:name="Title"/>
<w:lsdException w:name="Subtitle"/>
<w:lsdException w:name="Strong"/>
<w:lsdException w:name="Emphasis"/>
<w:lsdException w:name="Normal Table"/>
<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="Table Theme"/>
<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="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="TOC Heading"/>
</w:latentStyles>
<w:style w:type="paragraph" w:default="on" w:styleId="a">
<w:name w:val="Normal"/>
<wx:uiName wx:val="正文"/>
<w:rsid w:val="00284085"/>
<w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
</w:pPr>
<w:rPr>
<wx:font wx:val="Calibri"/>
<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="Calibri"/>
<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="008A071A"/>
<w:rPr>
<wx:font wx:val="Calibri"/>
</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="paragraph" w:styleId="a4">
<w:name w:val="header"/>
<wx:uiName wx:val="页眉"/>
<w:basedOn w:val="a"/>
<w:link w:val="Char"/>
<w:rsid w:val="00483A8E"/>
<w:pPr>
<w:pBdr>
<w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/>
</w:pBdr>
<w:tabs>
<w:tab w:val="center" w:pos="4153"/>
<w:tab w:val="right" w:pos="8306"/>
</w:tabs>
<w:snapToGrid w:val="off"/>
<w:jc w:val="center"/>
</w:pPr>
<w:rPr>
<wx:font wx:val="Calibri"/>
<w:sz w:val="18"/>
<w:sz-cs w:val="18"/>
</w:rPr>
</w:style>
<w:style w:type="character" w:styleId="Char">
<w:name w:val="页眉 Char"/>
<w:link w:val="a4"/>
<w:rsid w:val="00483A8E"/>
<w:rPr>
<w:sz w:val="18"/>
<w:sz-cs w:val="18"/>
</w:rPr>
</w:style>
<w:style w:type="paragraph" w:styleId="a5">
<w:name w:val="footer"/>
<wx:uiName wx:val="页脚"/>
<w:basedOn w:val="a"/>
<w:link w:val="Char0"/>
<w:rsid w:val="00483A8E"/>
<w:pPr>
<w:tabs>
<w:tab w:val="center" w:pos="4153"/>
<w:tab w:val="right" w:pos="8306"/>
</w:tabs>
<w:snapToGrid w:val="off"/>
<w:jc w:val="left"/>
</w:pPr>
<w:rPr>
<wx:font wx:val="Calibri"/>
<w:sz w:val="18"/>
<w:sz-cs w:val="18"/>
</w:rPr>
</w:style>
<w:style w:type="character" w:styleId="Char0">
<w:name w:val="页脚 Char"/>
<w:link w:val="a5"/>
<w:rsid w:val="00483A8E"/>
<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="2049"/>
<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:hdrShapeDefaults>
<o:shapedefaults v:ext="edit" spidmax="2049"/>
</w:hdrShapeDefaults>
<w:footnotePr>
<w:footnote w:type="separator">
<w:p wsp:rsidR="00EA4189" wsp:rsidRDefault="00EA4189" wsp:rsidP="00483A8E">
<w:r>
<w:separator/>
</w:r>
</w:p>
</w:footnote>
<w:footnote w:type="continuation-separator">
<w:p wsp:rsidR="00EA4189" wsp:rsidRDefault="00EA4189" wsp:rsidP="00483A8E">
<w:r>
<w:continuationSeparator/>
</w:r>
</w:p>
</w:footnote>
</w:footnotePr>
<w:endnotePr>
<w:endnote w:type="separator">
<w:p wsp:rsidR="00EA4189" wsp:rsidRDefault="00EA4189" wsp:rsidP="00483A8E">
<w:r>
<w:separator/>
</w:r>
</w:p>
</w:endnote>
<w:endnote w:type="continuation-separator">
<w:p wsp:rsidR="00EA4189" wsp:rsidRDefault="00EA4189" wsp:rsidP="00483A8E">
<w:r>
<w:continuationSeparator/>
</w:r>
</w:p>
</w:endnote>
</w:endnotePr>
<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="00666F81"/>
<wsp:rsid wsp:val="00005939"/>
<wsp:rsid wsp:val="000F16D7"/>
<wsp:rsid wsp:val="0012214B"/>
<wsp:rsid wsp:val="001722D5"/>
<wsp:rsid wsp:val="00227C22"/>
<wsp:rsid wsp:val="00284085"/>
<wsp:rsid wsp:val="00293FC5"/>
<wsp:rsid wsp:val="002A2C8D"/>
<wsp:rsid wsp:val="002A6AF7"/>
<wsp:rsid wsp:val="002B777F"/>
<wsp:rsid wsp:val="00300C05"/>
<wsp:rsid wsp:val="0030326A"/>
<wsp:rsid wsp:val="00306671"/>
<wsp:rsid wsp:val="00314144"/>
<wsp:rsid wsp:val="00331BB3"/>
<wsp:rsid wsp:val="003B22C0"/>
<wsp:rsid wsp:val="003B394D"/>
<wsp:rsid wsp:val="004120D2"/>
<wsp:rsid wsp:val="00457D5C"/>
<wsp:rsid wsp:val="00483A8E"/>
<wsp:rsid wsp:val="004C3CE1"/>
<wsp:rsid wsp:val="004C6859"/>
<wsp:rsid wsp:val="00597040"/>
<wsp:rsid wsp:val="005B2989"/>
<wsp:rsid wsp:val="005C007E"/>
<wsp:rsid wsp:val="005F6548"/>
<wsp:rsid wsp:val="006050A4"/>
<wsp:rsid wsp:val="0061615B"/>
<wsp:rsid wsp:val="006273F9"/>
<wsp:rsid wsp:val="00666F81"/>
<wsp:rsid wsp:val="00680F89"/>
<wsp:rsid wsp:val="006A50FD"/>
<wsp:rsid wsp:val="006F313D"/>
<wsp:rsid wsp:val="007265EC"/>
<wsp:rsid wsp:val="00737494"/>
<wsp:rsid wsp:val="00776EEF"/>
<wsp:rsid wsp:val="007C4A78"/>
<wsp:rsid wsp:val="00847EED"/>
<wsp:rsid wsp:val="008A071A"/>
<wsp:rsid wsp:val="008D4D6C"/>
<wsp:rsid wsp:val="009465BD"/>
<wsp:rsid wsp:val="00953FBA"/>
<wsp:rsid wsp:val="00957BEE"/>
<wsp:rsid wsp:val="00966A37"/>
<wsp:rsid wsp:val="00976FA5"/>
<wsp:rsid wsp:val="00A03D9E"/>
<wsp:rsid wsp:val="00A54614"/>
<wsp:rsid wsp:val="00A74060"/>
<wsp:rsid wsp:val="00AC24AA"/>
<wsp:rsid wsp:val="00AE6548"/>
<wsp:rsid wsp:val="00B00AEA"/>
<wsp:rsid wsp:val="00BD389D"/>
<wsp:rsid wsp:val="00C06929"/>
<wsp:rsid wsp:val="00C43201"/>
<wsp:rsid wsp:val="00C44BA8"/>
<wsp:rsid wsp:val="00CE2B13"/>
<wsp:rsid wsp:val="00D40E4F"/>
<wsp:rsid wsp:val="00D929B5"/>
<wsp:rsid wsp:val="00D930F3"/>
<wsp:rsid wsp:val="00DA1133"/>
<wsp:rsid wsp:val="00DF6D26"/>
<wsp:rsid wsp:val="00E02C43"/>
<wsp:rsid wsp:val="00EA4189"/>
<wsp:rsid wsp:val="00EA4A02"/>
<wsp:rsid wsp:val="00EE5786"/>
<wsp:rsid wsp:val="00F0476E"/>
<wsp:rsid wsp:val="00F242C9"/>
<wsp:rsid wsp:val="00F35505"/>
<wsp:rsid wsp:val="00F36B33"/>
<wsp:rsid wsp:val="00F67CF2"/>
<wsp:rsid wsp:val="00F8434B"/>
<wsp:rsid wsp:val="00F87936"/>
<wsp:rsid wsp:val="00FA67B2"/>
</wsp:rsids>
</w:docPr>
<w:body>
<wx:sect>
<w:p wsp:rsidR="00227C22" wsp:rsidRPr="00C06929" wsp:rsidRDefault="00293FC5" wsp:rsidP="00293FC5">
<w:pPr>
<w:jc w:val="center"/>
<w:rPr>
<w:sz w:val="32"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00C06929">
<w:rPr>
<w:rFonts w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="32"/>
<w:sz-cs w:val="28"/>
</w:rPr>
<w:t>产品确认详情</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00F0476E" wsp:rsidRPr="00F0476E" wsp:rsidRDefault="00F0476E" wsp:rsidP="00293FC5">
<w:pPr>
<w:jc w:val="center"/>
<w:rPr>
<w:sz w:val="4"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00C06929" wsp:rsidRDefault="00C06929" wsp:rsidP="00005939">
<w:pPr>
<w:jc w:val="left"/>
<w:rPr>
<w:sz w:val="18"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00C06929">
<w:rPr>
<w:rFonts w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:b/>
<w:sz w:val="28"/>
<w:sz-cs w:val="21"/>
</w:rPr>
<w:t>基本信息</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>供应商名称:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${supplier}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>货物通知书号:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${noticeid}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>项目名称:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${projectname}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>产品类型:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${prodname}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>产品名称型号:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${prodtypeid}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>到货时间:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${arrivaltime}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>到货地点:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${address}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>到货数量:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${prodnum}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>抽样数量:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${samplnum}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>提交人:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${createuserid}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="004120D2">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>提交时间:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${createtime}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00953FBA" wsp:rsidRDefault="00C06929" wsp:rsidP="0012214B">
<w:pPr>
<w:jc w:val="left"/>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
</w:p>
<w:p wsp:rsidR="00957BEE" wsp:rsidRDefault="00C06929" wsp:rsidP="00957BEE">
<w:pPr>
<w:jc w:val="left"/>
<w:rPr>
<w:b/>
<w:sz w:val="28"/>
<w:sz-cs w:val="21"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00957BEE">
<w:rPr>
<w:rFonts w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:b/>
<w:sz w:val="28"/>
<w:sz-cs w:val="21"/>
</w:rPr>
<w:t>检测结果</w:t>
</w:r>
</w:p>
<#list attrlist as attr> 
	<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00957BEE" wsp:rsidP="006A50FD">
	<w:pPr>
	<w:tabs>
	<w:tab w:val="left" w:pos="3085"/>
	<w:tab w:val="left" w:pos="4361"/>
	</w:tabs>
	<w:spacing w:line="360" w:line-rule="auto"/>
	<w:ind w:left-chars="400" w:left="840"/>
	<w:jc w:val="left"/>
	<w:rPr>
	<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
	<wx:font wx:val="宋体"/>
	<w:sz w:val="24"/>
	<w:sz-cs w:val="24"/>
	</w:rPr>
	</w:pPr>
	<w:r wsp:rsidRPr="00EA4189">
	<w:rPr>
	<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
	<wx:font wx:val="宋体"/>
	<w:sz w:val="24"/>
	<w:sz-cs w:val="24"/>
	</w:rPr>
	<w:t>${attr.attrname}:</w:t>
	</w:r>
	<w:r wsp:rsidRPr="00EA4189">
	<w:rPr>
	<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
	<wx:font wx:val="宋体"/>
	<w:sz w:val="24"/>
	<w:sz-cs w:val="24"/>
	</w:rPr>
	<w:tab/>
	</w:r>
	<w:r wsp:rsidRPr="00EA4189">
	<w:rPr>
	<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
	<wx:font wx:val="宋体"/>
	<w:sz w:val="24"/>
	<w:sz-cs w:val="24"/>
	</w:rPr>
	<w:tab/>
	<w:t>${attr.attrvalue}</w:t>
	</w:r>
	</w:p>
	
</#list>
	
<w:p wsp:rsidR="00C06929" wsp:rsidRDefault="00C06929" wsp:rsidP="00005939">
<w:pPr>
<w:jc w:val="left"/>
<w:rPr>
<w:b/>
<w:sz w:val="28"/>
<w:sz-cs w:val="21"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00957BEE">
<w:rPr>
<w:rFonts w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:b/>
<w:sz w:val="28"/>
<w:sz-cs w:val="21"/>
</w:rPr>
<w:t>确认结果</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="00306671">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>下一步处理人:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>${createuserid}</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="00C06929" wsp:rsidRPr="00EA4189" wsp:rsidRDefault="00C06929" wsp:rsidP="00306671">
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3085"/>
<w:tab w:val="left" w:pos="4361"/>
</w:tabs>
<w:spacing w:line="360" w:line-rule="auto"/>
<w:ind w:left-chars="400" w:left="840"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:t>处理结果:</w:t>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
</w:r>
<w:r wsp:rsidRPr="00EA4189">
<w:rPr>
<w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
<wx:font wx:val="宋体"/>
<w:sz w:val="24"/>
<w:sz-cs w:val="24"/>
</w:rPr>
<w:tab/>
<w:t>通过</w:t>
</w:r>
</w:p>
<w:p wsp:rsidR="0012214B" wsp:rsidRPr="00D40E4F" wsp:rsidRDefault="0012214B" wsp:rsidP="00D40E4F">
<w:pPr>
<w:jc w:val="right"/>
<w:rPr>
<w:sz w:val="20"/>
<w:sz-cs w:val="21"/>
</w:rPr>
</w:pPr>
</w:p>
<w:sectPr wsp:rsidR="0012214B" wsp:rsidRPr="00D40E4F" wsp:rsidSect="00284085">
<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>

下附图片处理为Base64码及解码工具代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Base64 {
	
	/**
	 * 
	 * @Description 将图片转成base64码
	 * @author YL
	 * @date 2019-4-11上午9:52:51
	 * @param src  图片路径
	 * @return   图片base64码
	 */
    public static String getImageBase64(String src) {
        if(src==null||src==""){
            return "";
        }
        File file = new File(src);
        if(!file.exists()) {
            return "";
        }
        InputStream in = null;
        byte[] data = null;  
        try {
            in = new FileInputStream(file);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        try {  
            data = new byte[in.available()];  
            in.read(data);  
            in.close();  
        } catch (IOException e) {  
          e.printStackTrace();  
        } 
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }
    
    
    
    
    /**
     * 
     * @Description
     * @author YL
     * @date 2019-4-11上午9:53:55
     * @param base64   图片base64码
     */
    public static void Base64toImage(String base64) {
    	String imgFilePath = "C:\\Users\\81937\\Desktop\\112.png";  //图片保存路径及名称
		OutputStream out = null;
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] b = decoder.decodeBuffer(base64);
			
			out = new FileOutputStream(imgFilePath);
			out.write(b);
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(out!=null){
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
			
		
	}
    
    public static void main(String[] args) {
    	String src ="C:\\Users\\81937\\Desktop\\111.png";
    	String imageBase = getImageBase64(src);
    	System.err.println(imageBase);
    	System.out.println("=================================================================================");
    	
    	Base64toImage(imageBase);
	}
}

 

相关链接:

       freemarker 官网:https://freemarker.apache.org/

        freemarker 语法:https://www.cnblogs.com/linjiqin/p/3388298.html (引用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码,通过FreeMarker生成Word文档: Configuration cfg = new Configuration(); cfg.setClassForTemplateLoading(this.getClass(), "/"); Template t = cfg.getTemplate("word.ftl");StringWriter stringWriter = new StringWriter(); t.process(dataMap, stringWriter); InputStream is = new ByteArrayInputStream(stringWriter.toString().getBytes("utf-8")); OutputStream os = new FileOutputStream(new File("/word.doc")); POIFSFileSystem fs = new POIFSFileSystem();// 对应于org.apache.poi.hdf.extractor.WordDocument fs.createDocumentInputStream(is); fs.writeFilesystem(os); os.close(); ### 回答2: Java使用FreeMarker生成Word文档的代码如下所示: ```java import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.*; import java.util.HashMap; import java.util.Map; public class WordGenerator { public static void main(String[] args) { // 设置模板文件路径 String templatePath = "path/to/template.ftl"; // 设置输出文件路径 String outputPath = "path/to/output.doc"; // 创建FreeMarker配置实例 Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); try { // 加载模板文件 cfg.setDirectoryForTemplateLoading(new File("path/to/templates")); Template template = cfg.getTemplate(templatePath); // 创建数据模型 Map<String, Object> data = new HashMap<>(); data.put("title", "Hello FreeMarker"); // 设置输出文件 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputPath), "UTF-8")); // 将模板和数据模型合并生成Word文档 template.process(data, out); // 关闭流 out.flush(); out.close(); System.out.println("Word文档生成成功!"); } catch (IOException | TemplateException e) { e.printStackTrace(); } } } ``` 上述代码中,我们首先需要设置模板文件路径(templatePath)和输出文件路径(outputPath)。然后创建FreeMarker的Configuration实例,并设置模板文件所在目录。接下来,加载模板文件并创建数据模型,将数据模型和模板进行合并生成Word文档。最后,关闭输出流并打印生成成功的提示信息。 在使用这段代码之前,需要确保已经添加了FreeMarker的依赖库。可以通过在pom.xml文件中添加以下依赖实现: ```xml <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> ``` 以上就是使用FreeMarker生成Word文档的代码及相关说明。 ### 回答3: 生成word文档可以使用FreeMarker这个开源的模板引擎库结合Java代码来实现。下面是一个示例代码,用于生成word文档: 1. 首先,确保你已经下载并在项目中引入了FreeMarker的相关Jar文件。 2. 创建一个用于存储模板文件(.ftl)的文件夹,并在该文件夹下创建一个word模板文件,例如template.ftl。在该模板中,你可以定义word文档的样式和内容。 3. 在Java代码中引入FreeMarker的相关类和包,例如freemarker.template.Configuration、freemarker.template.Template和java.io包。 4. 初始化FreeMarker的Configuration对象,并设置模板文件所在的路径。 5. 使用Configuration对象创建一个Template对象,通过加载模板文件。 6. 创建一个用于输出word文档的Writer对象,例如OutputStreamWriter或FileWriter。 7. 使用Template对象的process方法,传入模板所需的数据和输出Writer对象,来生成word文档。 下面是一个简单的示例代码: ``` import freemarker.template.Configuration; import freemarker.template.Template; import java.io.File; import java.io.FileWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; public class FreeMarkerWordGenerator { public static void main(String[] args) { try { Configuration configuration = new Configuration(Configuration.VERSION_2_3_30); configuration.setDirectoryForTemplateLoading(new File("模板文件夹路径")); configuration.setDefaultEncoding("UTF-8"); Template template = configuration.getTemplate("template.ftl"); Map<String, Object> data = new HashMap<>(); data.put("title", "示例标题"); data.put("content", "示例内容"); Writer writer = new FileWriter("生成word文档路径"); template.process(data, writer); writer.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中的"模板文件夹路径"和"生成word文档路径"需要替换为你自己的路径。 这个示例代码会根据你的模板文件(template.ftl)生成一个word文档,其中标题和内容使用了模板中定义的变量。你可以根据自己的需求来修改模板内容和生成的数据,来生成符合你需要的word文档

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值