资源简介
freemaker导出单个word格式doc,动态导出word,包含表格list数据。
代码片段和文件信息
package com.jeecg.assessResultScore.utils;
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.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecgframework.core.util.StringUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class WordUtils { // 配置信息代码本身写的还是很可读的就不过多注解了
private static Configuration configuration = null;
// 这里注意的是利用WordUtils的类加载器动态获得模板文件的位置
private static final String templateFolder = WordUtils.class.getClassLoader().getResource(“../../“).getPath()
+ “export/template/“;
static {
configuration = new Configuration();
configuration.setDefaultEncoding(“utf-8“);
try {
configuration.setDirectoryForTemplateLoading(new File(templateFolder));
} catch (IOException e) {
e.printStackTrace();
}
}
private WordUtils() {
throw new Assertionerror();
}
/**
* 下载单个word文件
* @param request 请求
* @param response 响应
* @param map word结果数据
* @param fileName 结果文件名称(不需要带后缀的)
* @param wordxmlName word模板名称
* @throws IOException
*/
@SuppressWarnings({ “rawtypes“ “unchecked“ })
public static void exportMillCertificateWord(HttpServletRequest request HttpServletResponse response Map mapString fileNameString wordxmlName)
throws IOException {
Template freemarkerTemplate = configuration.getTemplate(wordxmlName);
File file = null;
InputStream fin = null;
ServletOutputStream out = null;
try {
// 调用工具类的createDoc方法生成Word文档
file = createDoc(map freemarkerTemplate);
fin = new FileInputStream(file);
//根据不同浏览器,对fileName进行不同的编码
String userAgent = request.getHeader(“user-agent“).toLowerCase();
if (userAgent.contains(“msie“) || userAgent.contains(“like gecko“) ) {
// win10 ie edge 浏览器 和其他系统的ie
fileName = URLEncoder.encode(fileName “UTF-8“);
} else {
// fe
fileName = new String(fileName.getBytes(“utf-8“) “iso-8859-1“);
}
response.setCharacterEncoding(“utf-8“);
response.setContentType(“application/msword“);
// 设置浏览器以下载的方式处理该文件名
fileName = fileName+“.doc“;
response.setHeader(“Content-Disposition“
“attachment;filename=“+fileName);
out = response.getOutputStream();
byte[] buffer = new byte[512]; // 缓冲区
int bytesToRead = -1;
// 通过循环将读入的Word文件的内容输出到浏览器中
while ((bytesToRead = fin.read(buffer)) != -1) {
out.write(buffer 0 bytesToRead);
}
} finally {
if (out != null) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 259584 2018-12-06 15:29 freemaker导出单个word格式doc\freemaker基于word模板动态导出汇总整理.doc
文件 8214 2018-12-26 11:05 freemaker导出单个word格式doc\word导出工具类\WordUtils.java
目录 0 2019-05-11 10:33 freemaker导出单个word格式doc\word导出工具类
目录 0 2019-05-11 10:34 freemaker导出单个word格式doc
----------- --------- ---------- ----- ----
267798 4
- 上一篇:基于GPIB总线和VISA标准自动测试系统的应用
- 下一篇:触摸按键设计指导
评论
共有 条评论