首页>代码>java web导出插入图片到word文档的实例>/com.chen.springmvc/src/main/java/com/chen/springmvc/util/WordUtil.java
package com.chen.springmvc.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.Map;

import sun.misc.BASE64Encoder;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class WordUtil {

	private Configuration configuration = null;  
	
	public WordUtil(){
		configuration = new Configuration();
		configuration.setDefaultEncoding("utf-8");  
	}
	
	//dataMap 要填入模本的数据文件  
	public void createDoc(Map<String,Object> dataMap,String fileName) {  
	    //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,  
	    //这里我们的模板是放在template包下面  
		System.out.println(WordUtil.class.getClassLoader().getResource("/template/"));
	    configuration.setClassForTemplateLoading(WordUtil.class, "/template/");  
	    Template t=null;  
	    try {  
	        //test.ftl为要装载的模板  
//	    	t = configuration.getTemplate("fctestpaper.ftl"); 
	        t = configuration.getTemplate("fctestpaper2.ftl"); //添加插入图片处理
	    } catch (IOException e) {  
	        e.printStackTrace();  
	    }  
	    //输出文档路径及名称  
	    File outFile = new File(fileName);  
	    Writer out = null;  
	    FileOutputStream fos=null;  
	    try {  
	        fos = new FileOutputStream(outFile);  
	        OutputStreamWriter oWriter = new OutputStreamWriter(fos,"UTF-8");  
	        //这个地方对流的编码不可或缺,使用main()单独调用时,应该可以,但是如果是web请求导出时导出后word文档就会打不开,并且包XML文件错误。主要是编码格式不正确,无法解析。  
	        //out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));  
	         out = new BufferedWriter(oWriter);   
	    } catch (FileNotFoundException | UnsupportedEncodingException e1) {  
	        e1.printStackTrace();  
	    }  
	       
	    try {  
	        t.process(dataMap, out);  
	        out.close();  
	        fos.close();  
	    } catch (TemplateException e) {  
	        e.printStackTrace();  
	    } catch (IOException e) {  
	        e.printStackTrace();  
	    }  
	}  
	
	/**
	 * 图片处理
	 * @param imgFile
	 * @return
	 */
	 public String getImageStr(String imgFile){
        InputStream in=null;
        byte[] data=null;
        try {
            in=new FileInputStream(imgFile);
            data=new byte[in.available()];
            in.read(data);
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        BASE64Encoder encoder=new BASE64Encoder();
        return encoder.encode(data);
    }
}
最近下载更多
adminjiang  LV7 2023年11月26日
1006148200  LV7 2021年11月29日
123456nty  LV37 2021年8月16日
xcwang  LV11 2021年4月1日
liwentao0322  LV2 2021年1月17日
LiuHanWen  LV2 2020年8月23日
whfuai  LV14 2019年11月28日
756398953  LV12 2019年11月7日
zzxzzx940330  LV1 2019年8月19日
doutao6677  LV25 2019年8月5日
最近浏览更多
adminjiang  LV7 2023年11月26日
为我所用  LV1 2022年6月21日
twv008 2022年1月24日
暂无贡献等级
tangjj7260  LV18 2021年12月25日
ylsh123 2021年12月6日
暂无贡献等级
mudai88 2021年12月1日
暂无贡献等级
1006148200  LV7 2021年11月27日
likuozhan 2021年9月28日
暂无贡献等级
adoutxv  LV1 2021年9月24日
hua12306 2021年8月31日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友