java word導入導出工具類


package com.shareworx.yjwy.utils;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.IOUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
 * 
 * @author zhenwei.shi
 *
 */
public class ImpAndExpWord {
    /**
     * 根據表單導出word文檔
     * @author zhenwei.shi
     * @param map 導入對象的鍵值對  KEY=模板標簽  VALUE=替換模板標簽的內容
     * @param temlatePath word模板的全部路徑  如:/templates/supplier/供應商管理表單.docs
     *            此路徑根據架構師搭建的資源環境而定,一般src/../../xx.docs
     * @return
     */
    public static void export(Map<String,String> params, String docPath){        
        String docName = docPath.substring(docPath.lastIndexOf("/")+1, docPath.length());
        InputStream is = null;
        ServletOutputStream out = null;
        try{
            //下面這個MAP 就是上面參數里的MAP 在此為了視覺更清晰 真正實施時 提前通過MAP傳進來,不要在此new
            params = new HashMap<String, String>();
            params.put("AAAA","v1");//word模板上有個字符串叫k1,這里將模板上的k1替換為要賦值v1
            params.put("k2","v2");//同上
            params.put("k3","v3");//同上
            params.put("k4","v4");//同上
            params.put("k5","v5");//同上
            params.put("k6","v6");//同上
            params.put("k7","v7");//同上
            
            is = ImpAndExpWord.class.getResourceAsStream("/"+docPath);
            POIFSFileSystem pfs = new POIFSFileSystem(is);  
            HWPFDocument hwpf = new HWPFDocument(pfs);  
            Range range = hwpf.getRange();
            
            Set<String> keys = params.keySet();
            for(String key: keys){
                range.replaceText(key, params.get(key));
            }
            HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/octet-stream; charset=UTF-8");
            response.addHeader("Content-Disposition", "attachment; filename=\""+new String(docName.getBytes("GB2312"),"ISO8859-1")+"\";");// 
            out = response.getOutputStream();
            
               hwpf.write(out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            IOUtils.closeQuietly(out);
            IOUtils.closeQuietly(is);
        }
    }

}

word 圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM