概述
场景: 后台给定一个标准文件模板, 在页面填写表单保存后, 根据内容填充模板生成一个文件, 然后将其上传.
因为上传功能涉及到一个文件夹配置等, 公司里面已经封装好一套工具, 需要给定一个File对象或者输入流对象和一些关联信息,调用方法即可. 所以这里有三个步骤 1.填充文件 2.生成一个临时文件 3.调用上传
第二步可以放一个固定文件, 每次填充都写到这个文件. 但这个如果有并发操作的话就会出现问题, 所以此处采用每次都生成一个临时文件,所有步骤完成后把临时文件删除. 下面上代码
private void buildAndUploadDoc(AuditSiteSurvey survey) throws IOException {
Cost cost = costService.get(survey.getTaskId());
String fileName = "test填充文档.doc";
if(cost != null){
fileName = cost.getName() + fileName;
}
Map<String, Object> templateParams = new HashMap<>();
templateParams.put("cost", cost);
templateParams.put("ass", survey);
templateParams.put("curDate", DateUtil.formatYMD(new Date()));
String strPath = SysVariable.get("SAVE_FILE_ROOT") + "/AuditSiteSurveyTemp";
String tempFileName = "test填充文档" + System.currentTimeMillis()+".doc";
File file = new File(strPath, tempFileName);//填充好的临时文件
if (!file.exists()) { //文件不存在则创建文件,先创建目录
File dir = new File(file.getParent());
dir.mkdirs();
file.createNewFile();
}
try(Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))){
ExportWordUtils.mxl2Word("KCJLB.xml", out, templateParams);
FileUploadForm uploadForm = new FileUploadForm();
uploadForm.setUploadFileName(fileName);
uploadForm.setUpload(file);
uploadForm.setRefRecordId(survey.getId());
uploadForm.setRefModule("AuditSiteSurvey");
fileService.upload(uploadForm); //封装好的上传文件方法
}finally{
file.delete();//删除缓存文件,要注意的是涉及到这个临时文件的流都记得关闭才能有效删除
}
}
下面附上ExportWordUtils的填充内容的方法
public static void mxl2Word(Path directory,String filename,Writer writer,Map<String, Object> map) throws IOException {
Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
configuration.setDefaultEncoding("UTF-8");
configuration.setDirectoryForTemplateLoading(directory.toFile());
Template template=configuration.getTemplate(filename);
try {
template.process(map, writer);
} catch (TemplateException e) {
e.printStackTrace();
}
}
最后
以上就是寂寞小虾米为你收集整理的使用freemarker填充模板生成文件并进行上传的全部内容,希望文章能够帮你解决使用freemarker填充模板生成文件并进行上传所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复