FreemakerUtils 工具类 可以生成word和excel文件
package cn.zoshu.common.utils.freemaker;import cn.zoshu.common.utils.DateUtils;import cn.zoshu.common.utils.TimestampHelper;import cn.zoshu.framework.config.RuoYiConfig;import freemarker.template.Conf
·
package cn.zoshu.common.utils.freemaker;
import cn.zoshu.common.utils.DateUtils;
import cn.zoshu.common.utils.TimestampHelper;
import cn.zoshu.framework.config.RuoYiConfig;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/*
* @Description: 导出文档工具类
* @Author: Chris.Ren
* @Date: 2020-05-29
*/
public class FreemakerUtils
{
static String path= RuoYiConfig.getUploadPath()+"/";
/*
* @Description: 导出文档
* @Param: map:包含模板中的字段和模板名wordName,导出文档名exportWordName
* @returns: String
* @Author: Chris.Ren
* @Date: 2020-05-29
*/
public static String exportWord(Map<String,Object> params) {
try {
//Configuration 用于读取ftl文件
Configuration configuration = new Configuration(new Version("2.3.30"));
configuration.setDefaultEncoding("utf-8");
/** 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 指定ftl文件所在目录的路径,而不是ftl文件的路径 */
// 指定路径的第一种方式(根据某个类的相对路径指定)
// configuration.setClassForTemplateLoading(this.getClass(), "");
// 指定路径的第二种方式,我的路径是C:/a.ftl
System.out.println("导出地址"+path+"model/"+String.valueOf(params.get("wordName")));
// path = "D:/safetyCheck/uploadPath/upload/";
configuration.setDirectoryForTemplateLoading(new File(path+"model/"));
//输出文档路径及名称
//利用uuid生成随机文件名,防止重复
// String filename=path+params.get("exportWordName")+"-"+UUID.randomUUID()+".doc";
String filename=path+params.get("exportWordName")+"-"+ DateUtils.dateTimeNow() +".doc";
File outFile = new File(filename);
//以utf-8的编码读取ftl文件
Template template = configuration.getTemplate(String.valueOf(params.get("wordName")), "utf-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
template.process(params, out);
out.close();
//返回文件路径
return filename;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/*
* @Description: 导出excel
* @Param: map:包含模板中的字段和模板名wordName,导出文档名exportWordName
* @returns: String
* @Author: Chris.Ren
* @Date: 2020-05-29
*/
public static String exportExecl(Map<String,Object> params) {
try {
//Configuration 用于读取ftl文件
Configuration configuration = new Configuration(new Version("2.3.30"));
configuration.setDefaultEncoding("utf-8");
/** 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 指定ftl文件所在目录的路径,而不是ftl文件的路径 */
// 指定路径的第一种方式(根据某个类的相对路径指定)
// configuration.setClassForTemplateLoading(this.getClass(), "");
// 指定路径的第二种方式,我的路径是C:/a.ftl
// path = "D:/safetyCheck/uploadPath/upload/";
System.out.println("导出地址"+path+"model/"+String.valueOf(params.get("wordName")));
configuration.setDirectoryForTemplateLoading(new File(path+"model/"));
//输出文档路径及名称
//利用uuid生成随机文件名,防止重复
// String filename=path+params.get("exportWordName")+"-"+UUID.randomUUID()+".doc";
String filename=path+params.get("exportWordName")+"-"+ DateUtils.dateTimeNow() +".xlsx";
File outFile = new File(filename);
//以utf-8的编码读取ftl文件
Template template = configuration.getTemplate(String.valueOf(params.get("wordName")), "utf-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
template.process(params, out);
out.close();
//返回文件路径
return filename;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
参数params的使用
Map<String,Object> map = Maps.newHashMap();
map.put("list", list);
map.put("exportWordName", "高风险问题统计表");
map.put("wordName", Constants.HEIGHT_WORK_ALLOW);
String path = FreemakerUtils.exportWord(map);
更多推荐
已为社区贡献1条内容
所有评论(0)