1.下面是我做的加载模板导出带图片的word的导出方式,使用之前请映入freemarker的jar包,可以从百度下载即可。
2.首先准备到你要导出的word模板,在要填充的模板中填入el表达式,如下图所示。
XXXX公司招聘高校毕业生应聘登记表
姓 名 |
${name} |
性 别 |
${sex} |
出生年月 |
${birthday} |
|||||||
联系方式 |
${mobile} |
电子邮箱 |
${email} |
籍贯 |
${nativeplace} |
|||||||
民族 |
${national} |
户籍所在地 |
${permanreside} |
政治面貌 |
${polity} |
|||||||
参加党派时间 |
${joinpolitydate} |
参加工作时间 |
${joinworkdate} |
健康状况 |
${health} |
|||||||
计算机水平 |
${computerlevel} |
接受其他工作地点 |
${isacceptreplace} |
可到岗日期 |
${candutydate} |
|||||||
职业资格 |
${prof} |
期望工作类型 |
${expect_worktype} |
期望工作地点 |
${expect_workaddr} |
|||||||
身份证号 |
${id} |
掌握何种外语及熟练程度 |
${froeignlang} |
|||||||||
应聘学历 |
${edu} |
学 位 |
${pk_degree} |
|||||||||
熟悉专业(特长) |
${personal} |
|||||||||||
自我评价 |
${evaluation} |
|||||||||||
学习经历 |
起止时间 |
学历和学位 |
学校名称 |
所学专业或 研究方向 |
是否 全日制 |
|||||||
${begindate} |
${education} |
${school} |
${major} |
${studymode} |
||||||||
实践或工作经历 |
起止时间 |
单位 |
职务(岗位) |
具体工作要点 |
证明人 |
|||||||
${begindate} |
${workcorp} |
${workjob} |
${workduty} |
${certifier} |
||||||||
获得证书情况 |
证书名称 |
获得时间 |
发证单位 |
级别、成绩 |
证书编号 |
|||||||
${vencourmeas} |
${vencourdate} |
${vencourunit} |
${encourrank} |
${vencourtype} |
||||||||
学术成果情况 |
论文(成果) 名称 |
核心期刊或收录机构名称 |
年度及期次 |
作者排序 |
论文索引号 |
|||||||
${glbdef1} |
${glbdef2} |
${glbdef3} |
${glbdef4} |
${glbdef5} |
||||||||
获奖情况(奖学金及评优) |
证书名称 |
获得时间 |
发证单位 |
证书编号 |
证书类型 |
|||||||
${glbdef1} |
${glbdef2} |
${glbdef3} |
${glbdef4} |
${glbdef5} |
||||||||
主要家庭成员或社会关系 |
称谓 |
姓名 |
出生年月 |
工作单位及职务 (岗位、职称) |
||||||||
${mem_relation} |
${mem_name} |
${mem_birthday} |
${mem_corp} |
|||||||||
其他情况说明 |
|
|||||||||||
诚信 承诺 |
本人承诺,以上信息均与事实相符,若有虚假,即自愿取消应聘资格。
承诺人: |
注意:如果有图片,要找一张图片先在word中填充,顺便调整好你的图片的样式。这样导出的word的也会按照你设定的样式进行导出word.
3.打开word,选择另存为,保存为xml文件格式,如下图:
4.然后修改.xml文件的后缀名为.ftl,也就是freemarker格式。5.然后使用文本编辑器打开。最好的如notepad++,UE等。
6.框中的文件保留,横线划掉的删除。注意:图片是如下图格式
将黑色字符替换成${自定义名称}即可。
7.用<#list studylist as stydy>标签将集合循环的
8.至此,模板已做好,之后映入我这个类,然后运行即可。
package com.hr.fs.web.controller;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nc.bs.framework.common.RuntimeEnv;
import sun.misc.BASE64Encoder;
import com.hr.fs.web.model.FS_RmCorpUserVO;
import com.hr.fs.web.model.base.StaticConfig;
import com.jfinal.core.Controller;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FExportTempleteController extends Controller{
private Configuration configuration = null;
//模板的位置
private String wordtemplate = RuntimeEnv.getInstance().getNCHome()+"\\hotwebs\\fshr\\resumetemplet";
//下载的位置及文件名
private String fileName = RuntimeEnv.getInstance().getNCHome()+"\\hotwebs\\fshr\\file\\个人简历模板.doc";
public FExportTempleteController() {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
}
public void exportWord(){
//获取用户
FS_RmCorpUserVO user = getSessionAttr("user");
String usertype = user.getUsertype();
//新建一个map用来存储
Map dataMap = new HashMap();
//模板的名字
String fileTemplateName ;
if(usertype.equals(StaticConfig.SCHOOLRECRUITSTATUS)){
fileTemplateName = "schoolexport.ftl";
getSchoolData(dataMap);
}else if(usertype.equals(StaticConfig.SOCIETYRECRUITSTATUS)){
fileTemplateName = "societyexport.ftl";
getSchoolData(dataMap);
}else{
fileTemplateName = "innerexport.ftl";
getSchoolData(dataMap);
}
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。
//这里我们的模板是放在resumetemplet路径下面 使用FileTemplateLoader
TemplateLoader templateLoader=null;
Template t=null;
Writer out = null;
try{
templateLoader=new FileTemplateLoader(new File(wordtemplate));
configuration.setTemplateLoader(templateLoader);
t=configuration.getTemplate(fileTemplateName,"UTF-8");
//输出文档路径及名称
File outFile = new File(fileName);
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));
//装载数据
t.process(dataMap, out);
renderFile(outFile);
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 生成数据
* @param dataMap
*/
private void getSchoolData(Map map){
try {
/**
* 设置基本信息
*/
map.put("name", "");
map.put("sex", "");
map.put("birthday", "");
map.put("national", "");
map.put("email", "");
map.put("nativeplace", "");
map.put("mobile", "");
map.put("permanreside", "");
map.put("polity", "");
map.put("joinpolitydate", "");
map.put("joinworkdate", "");
map.put("health", "");
map.put("computerlevel", "");
map.put("isacceptreplace", "");
map.put("candutydate", "");
map.put("prof", "");
map.put("expect_worktype", "");
map.put("expect_workaddr", "");
map.put("id", "");
map.put("froeignlang", "");
map.put("edu", "");
map.put("pk_degree", "");
map.put("personal", "");
map.put("evaluation", "");
map.put("img", getImageStr(""));
/**
* 学习经历
*/
List