zoukankan      html  css  js  c++  java
  • 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 图片

  • 相关阅读:
    [CTSC2017]吉夫特(Lucas定理,DP)
    [CTSC2017]游戏(Bayes定理,线段树)
    [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树)
    [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
    [BZOJ3786]星系探索(伪ETT)
    [CTSC2017]密钥
    PKUSC2018训练日程(4.18~5.30)
    [NOI2016]优秀的拆分
    [SDOI2008]Sandy的卡片
    [JSOI2007]字符加密
  • 原文地址:https://www.cnblogs.com/zwcry/p/8484261.html
Copyright © 2011-2022 走看看