内容发布更新时间 : 2024/11/16 23:32:19星期一 下面是文章的全部内容请认真阅读。
importjava.io.BufferedInputStream; importjava.io.BufferedOutputStream; importjava.io.BufferedWriter; importjava.io.File;
importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream;
importjava.io.OutputStreamWriter; importjava.io.Writer;
importjava.net.URLEncoder; importjava.util.Map;
importjavax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger;
importfreemarker.template.Configuration; importfreemarker.template.Template; /**
* @Desc:word操作工具类 */
public class WordUtil { private static Logger log = Logger.getLogger(WordUtil.class); /**
* @Desc:生成word文件 * @paramdataMap word中需要展示的动态数据,用map集合来保存 * @paramtemplateName word模板名称,例如:test.ftl * @paramfilePath文件生成的目标路径,例如:D:/wordFile/ * @paramfileName生成的文件名称,例如:test.doc */ public static void createWord(Map
//创建配置实例
Configuration configuration = new Configuration();
//设置编码
configuration.setDefaultEncoding(\
//ftl模板文件
File file = new File(filePath); configuration.setDirectoryForTemplateLoading(file);
//获取模板
Template template = configuration.getTemplate(templateName);
//输出文件
File outFile = new File(filePath + File.separator + fileName);
//如果输出目标文件夹不存在,则创建 if (!outFile.getParentFile().exists()){ outFile.getParentFile().mkdirs(); }
//将模板和数据模型合并生成文件 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),\
//生成文件
template.process(dataMap, out);
//关闭流 out.flush(); out.close();
} catch (Exception e) {
log.error(\生成 word文档(WordUtil)出错:【msg:\】 ,文件名:\+ fileName);
e.printStackTrace(); } } /** * 文件下载 * @param path 文件路径全路径,包含文件名 * @param response * @return */ public static HttpServletResponsedownFile(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); // 以流的形式下载文件。 InputStreamfis = new BufferedInputStream(new FileInputStream(file)); byte[] buffer = new byte[fis.available()];
}
fis.read(buffer); fis.close();
// 清空response response.reset();
// 设置response的Header
String fileName = URLEncoder.encode(filename,\if(fileName.length()>150){ //解决IE 6.0 bug fileName=new String(filename.getBytes(\ }
response.addHeader(\response.addHeader(\
OutputStreamtoClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType(\toClient.write(buffer); toClient.flush(); toClient.close();
file.delete();
} catch (IOException e) { log.error(\下载文档(WordUtil)出错:【msg:\】 \e.printStackTrace(); }
return response; }