1. 程式人生 > >WordUtil java導出word工具類

WordUtil java導出word工具類

tac 生成word marker ger imp port chm 下載 ram

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文件
* @paramdataMap word中需要展示的動態數據,用map集合來保存
* @paramtemplateName word模板名稱,例如:test.ftl
* @paramfilePath文件生成的目標路徑,例如:D:/wordFile/
* @paramfileName生成的文件名稱,例如:test.doc
* */
public static void createWord(Map<String, Object>dataMap,String templateName,String filePath,String fileName){
try {
//創建配置實例
Configuration configuration = new Configuration();
//設置編碼
configuration.setDefaultEncoding("UTF-8");
//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),"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", "" + file.length());
OutputStream outs = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
outs.write(buffer);
outs.flush();
outs.close();
file.delete();
}catch (IOException e) {
log.error("下載文檔(WordUtil)出錯:【msg:"+e.getMessage()+"】 "); e.printStackTrace(); }
return response;
}
}

WordUtil java導出word工具類