import freemarker.template.Configuration;
import freemarker.template.Template;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.Map;
public class WordUtils {
/**
* @param dataList word中需要展示的动态数据,用map集合来保存
* @param filePath 文件生成的目标路径,例如:D:/wordFile/
* @param fileName 生成的文件名称,例如:test.doc
* @Desc:生成word文件
*/
public static Boolean createWord(HttpServletRequest request, Map<String, Object> dataList, String filePath, String fileName) {
// 创建配置实例
@SuppressWarnings("deprecation")
Configuration configuration = new Configuration();
// 设置编码
configuration.setDefaultEncoding("UTF-8");
configuration.setClassForTemplateLoading(WordUtils.class, "/ftl/");//jar项目
//configuration.setServletContextForTemplateLoading(request.getServletContext(), "/ftl");//war项目
// 获取模板
try {
String templateName = "drawingTemplate.ftl";
Template template = configuration.getTemplate(templateName);
// 输出文件
File outFile = new File(filePath + File.separator + fileName);
// 如果输出目标文件夹不存在,则创建
if (!outFile.getParentFile().exists()) {
Boolean b = outFile.getParentFile().mkdirs();
if (!b) {
throw new RuntimeException("目录创建失败");
}
}
// 将模板和数据模型合并生成文件
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
// 生成文件
template.process(dataList, out);
// 关闭流
out.flush();
out.close();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
}
WordUtils
最新推荐文章于 2023-07-05 15:43:10 发布