import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URLEncoder;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* @Desc:word操作工具类
*/
public class WordUtil {
private static Logger log = Logger.getLogger(WordUtil.class);
/**
* @Desc:生成word文件
* @param dataMap word中需要展示的动态数据,用map集合来保存
* @param templateName word模板名称,例如:test.ftl
* @param filePath 文件生成的目标路径,例如:D:/wordFile/
* @param fileName 生成的文件名称,例如:test.doc
*/
public static void createWord(Map try { //创建配置实例 Configuration configuration = new Configuration(); //设置编码 configuration.setDefaultEncoding(\"UTF-8\"); //ftl模板文件 File file = new File(filePath); dataMap,String 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),\"UTF-8\")); //生成文件 template.process(dataMap, out); //关闭流 out.flush(); out.close(); } catch (Exception e) { log.error(\"生成 word文档(WordUtil)出错:【msg:\"+e.getMessage()+\"】文件名:\" + fileName); e.printStackTrace(); } , } /** * 文件下载 * @param path 文件路径全路径,包含文件名 * @param response * @return */ public static HttpServletResponse downFile(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); // 以流的形式下载文件。 InputStream fis = 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,\"UTF-8\"); if(fileName.length()>150){ //解决IE 6.0 bug fileName=new String(filename.getBytes(\"GBK\"),\"ISO-8859-1\"); } response.addHeader(\"Content-Disposition\\"attachment;filename=\" + fileName); response.addHeader(\"Content-Length\ OutputStream toClient = BufferedOutputStream(response.getOutputStream()); response.setContentType(\"application/octet-stream\"); toClient.write(buffer); toClient.flush(); toClient.close(); file.delete(); } catch (IOException e) { log.error(\"下载 文档(WordUtil)出错:【msg:\"+e.getMessage()+\"】 e.printStackTrace(); new \"); } return response; } } 因篇幅问题不能全部显示,请点此查看更多更全内容