精华内容
下载资源
问答
  • Java操作word模板插入图片

    万次阅读 2017-07-03 22:31:19
    Java操作word模板插入图片word模板中写上图片语法,插入本地图片,同时还支持网络图片,定义图片大小。 1.制作word模板,插入图片使用语法@,支持插入本地图片和网络图片 {{@localPicture}} {{@...

    Java操作word模板插入图片

    在word模板中写上图片语法,插入本地图片,同时还支持网络图片,定义图片大小。

    1.制作word模板,插入图片使用语法@,支持插入本地图片和网络图片{{@localPicture}} {{@urlPicture}}

    2.使用Poi-tl,添加依赖

    <dependency>
        <groupId>com.deepoove</groupId>
        <artifactId>poi-tl</artifactId>
        <version>1.0.0</version>
    </dependency>

    poi-tl是一个java的模板引擎。

    GitHub主页:https://github.com/Sayi/poi-tl
    文档地址:http://deepoove.com/poi-tl

    3.Java代码示例

    public void testNumbericRender() throws Exception {
            Map<String, Object> datas = new HashMap<String, Object>() {
                {
                    //本地图片
                    put("localPicture", new PictureRenderData(100, 120, "src/test/resources/logo.png"));
                    //网路图片 
                    put("urlPicture", new PictureRenderData(100, 100, ".png", BytePictureUtils.getUrlByteArray("https://avatars3.githubusercontent.com/u/1394854?v=3&s=40")));
                }
            };
    
            XWPFTemplate template = XWPFTemplate.compile("~/picture.docx")
                    .render(datas);
    
            FileOutputStream out = new FileOutputStream("out_picture.docx");
            template.write(out);
            out.flush();
            out.close();
            template.close();
        }
    
    展开全文
  • POI Word 模板 文字 图片 替换

    万次阅读 热门讨论 2015-01-30 16:12:27
    POI Word 模板 文字 图片 替换 博客分类:  java ...Word模板:   替换后效果:   代码: 1、入口文件 Java代码  public class Test {     public
    
    

    实验环境:POI3.7+Word2007

    Word模板:

     

    替换后效果:

     

    代码:

    1、入口文件

    Java代码  收藏代码
    1. public class Test {  
    2.       
    3.     public static void main(String[] args) throws Exception {  
    4.           
    5.         Map<String, Object> param = new HashMap<String, Object>();  
    6.         param.put("${name}""huangqiqing");  
    7.         param.put("${zhuanye}""信息管理与信息系统");  
    8.         param.put("${sex}""男");  
    9.         param.put("${school_name}""山东财经大学");  
    10.         param.put("${date}"new Date().toString());  
    11.           
    12.         Map<String,Object> header = new HashMap<String, Object>();  
    13.         header.put("width"100);  
    14.         header.put("height"150);  
    15.         header.put("type""jpg");  
    16.         header.put("content", WordUtil.inputStream2ByteArray(new FileInputStream("c:\\new.jpg"), true));  
    17.         param.put("${header}",header);  
    18.           
    19.         Map<String,Object> twocode = new HashMap<String, Object>();  
    20.         twocode.put("width"100);  
    21.         twocode.put("height"100);  
    22.         twocode.put("type""png");  
    23.         twocode.put("content", ZxingEncoderHandler.getTwoCodeByteArray("测试二维码,huangqiqing"100,100));  
    24.         param.put("${twocode}",twocode);  
    25.           
    26.         CustomXWPFDocument doc = WordUtil.generateWord(param, "c:\\1.docx");  
    27.         FileOutputStream fopts = new FileOutputStream("c:/2.docx");  
    28.         doc.write(fopts);  
    29.         fopts.close();  
    30.     }  
    31. }  

     

    2、封装的工具类WordUtil.java

    Java代码  收藏代码
    1. package test1;  
    2.   
    3. import java.io.ByteArrayInputStream;  
    4. import java.io.IOException;  
    5. import java.io.InputStream;  
    6. import java.util.Iterator;  
    7. import java.util.List;  
    8. import java.util.Map;  
    9. import java.util.Map.Entry;  
    10. import org.apache.poi.POIXMLDocument;  
    11. import org.apache.poi.openxml4j.opc.OPCPackage;  
    12. import org.apache.poi.xwpf.usermodel.XWPFParagraph;  
    13. import org.apache.poi.xwpf.usermodel.XWPFRun;  
    14. import org.apache.poi.xwpf.usermodel.XWPFTable;  
    15. import org.apache.poi.xwpf.usermodel.XWPFTableCell;  
    16. import org.apache.poi.xwpf.usermodel.XWPFTableRow;  
    17.   
    18. /** 
    19.  * 适用于word 2007 
    20.  * poi 版本 3.7 
    21.  */  
    22. public class WordUtil {  
    23.   
    24.     /** 
    25.      * 根据指定的参数值、模板,生成 word 文档 
    26.      * @param param 需要替换的变量 
    27.      * @param template 模板 
    28.      */  
    29.     public static CustomXWPFDocument generateWord(Map<String, Object> param, String template) {  
    30.         CustomXWPFDocument doc = null;  
    31.         try {  
    32.             OPCPackage pack = POIXMLDocument.openPackage(template);  
    33.             doc = new CustomXWPFDocument(pack);  
    34.             if (param != null && param.size() > 0) {  
    35.                   
    36.                 //处理段落  
    37.                 List<XWPFParagraph> paragraphList = doc.getParagraphs();  
    38.                 processParagraphs(paragraphList, param, doc);  
    39.                   
    40.                 //处理表格  
    41.                 Iterator<XWPFTable> it = doc.getTablesIterator();  
    42.                 while (it.hasNext()) {  
    43.                     XWPFTable table = it.next();  
    44.                     List<XWPFTableRow> rows = table.getRows();  
    45.                     for (XWPFTableRow row : rows) {  
    46.                         List<XWPFTableCell> cells = row.getTableCells();  
    47.                         for (XWPFTableCell cell : cells) {  
    48.                             List<XWPFParagraph> paragraphListTable =  cell.getParagraphs();  
    49.                             processParagraphs(paragraphListTable, param, doc);  
    50.                         }  
    51.                     }  
    52.                 }  
    53.             }  
    54.         } catch (Exception e) {  
    55.             e.printStackTrace();  
    56.         }  
    57.         return doc;  
    58.     }  
    59.     /** 
    60.      * 处理段落 
    61.      * @param paragraphList 
    62.      */  
    63.     public static void processParagraphs(List<XWPFParagraph> paragraphList,Map<String, Object> param,CustomXWPFDocument doc){  
    64.         if(paragraphList != null && paragraphList.size() > 0){  
    65.             for(XWPFParagraph paragraph:paragraphList){  
    66.                 List<XWPFRun> runs = paragraph.getRuns();  
    67.                 for (XWPFRun run : runs) {  
    68.                     String text = run.getText(0);  
    69.                     if(text != null){  
    70.                         boolean isSetText = false;  
    71.                         for (Entry<String, Object> entry : param.entrySet()) {  
    72.                             String key = entry.getKey();  
    73.                             if(text.indexOf(key) != -1){  
    74.                                 isSetText = true;  
    75.                                 Object value = entry.getValue();  
    76.                                 if (value instanceof String) {//文本替换  
    77.                                     text = text.replace(key, value.toString());  
    78.                                 } else if (value instanceof Map) {//图片替换  
    79.                                     text = text.replace(key, "");  
    80.                                     Map pic = (Map)value;  
    81.                                     int width = Integer.parseInt(pic.get("width").toString());  
    82.                                     int height = Integer.parseInt(pic.get("height").toString());  
    83.                                     int picType = getPictureType(pic.get("type").toString());  
    84.                                     byte[] byteArray = (byte[]) pic.get("content");  
    85.                                     ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);  
    86.                                     try {  
    87.                                         int ind = doc.addPicture(byteInputStream,picType);  
    88.                                         doc.createPicture(ind, width , height,paragraph);  
    89.                                     } catch (Exception e) {  
    90.                                         e.printStackTrace();  
    91.                                     }  
    92.                                 }  
    93.                             }  
    94.                         }  
    95.                         if(isSetText){  
    96.                             run.setText(text,0);  
    97.                         }  
    98.                     }  
    99.                 }  
    100.             }  
    101.         }  
    102.     }  
    103.     /** 
    104.      * 根据图片类型,取得对应的图片类型代码 
    105.      * @param picType 
    106.      * @return int 
    107.      */  
    108.     private static int getPictureType(String picType){  
    109.         int res = CustomXWPFDocument.PICTURE_TYPE_PICT;  
    110.         if(picType != null){  
    111.             if(picType.equalsIgnoreCase("png")){  
    112.                 res = CustomXWPFDocument.PICTURE_TYPE_PNG;  
    113.             }else if(picType.equalsIgnoreCase("dib")){  
    114.                 res = CustomXWPFDocument.PICTURE_TYPE_DIB;  
    115.             }else if(picType.equalsIgnoreCase("emf")){  
    116.                 res = CustomXWPFDocument.PICTURE_TYPE_EMF;  
    117.             }else if(picType.equalsIgnoreCase("jpg") || picType.equalsIgnoreCase("jpeg")){  
    118.                 res = CustomXWPFDocument.PICTURE_TYPE_JPEG;  
    119.             }else if(picType.equalsIgnoreCase("wmf")){  
    120.                 res = CustomXWPFDocument.PICTURE_TYPE_WMF;  
    121.             }  
    122.         }  
    123.         return res;  
    124.     }  
    125.     /** 
    126.      * 将输入流中的数据写入字节数组 
    127.      * @param in 
    128.      * @return 
    129.      */  
    130.     public static byte[] inputStream2ByteArray(InputStream in,boolean isClose){  
    131.         byte[] byteArray = null;  
    132.         try {  
    133.             int total = in.available();  
    134.             byteArray = new byte[total];  
    135.             in.read(byteArray);  
    136.         } catch (IOException e) {  
    137.             e.printStackTrace();  
    138.         }finally{  
    139.             if(isClose){  
    140.                 try {  
    141.                     in.close();  
    142.                 } catch (Exception e2) {  
    143.                     System.out.println("关闭流失败");  
    144.                 }  
    145.             }  
    146.         }  
    147.         return byteArray;  
    148.     }  
    149. }  

     

    3、重写的类 CustomXWPFDocument

    Java代码  收藏代码
    1. package test1;    
    2.     
    3. import java.io.IOException;  
    4. import java.io.InputStream;  
    5. import org.apache.poi.openxml4j.opc.OPCPackage;  
    6. import org.apache.poi.xwpf.usermodel.XWPFDocument;  
    7. import org.apache.poi.xwpf.usermodel.XWPFParagraph;  
    8. import org.apache.xmlbeans.XmlException;  
    9. import org.apache.xmlbeans.XmlToken;  
    10. import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;  
    11. import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;  
    12. import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;  
    13.     
    14. /** 
    15.  * 自定义 XWPFDocument,并重写 createPicture()方法 
    16.  */  
    17. public class CustomXWPFDocument extends XWPFDocument {    
    18.     public CustomXWPFDocument(InputStream in) throws IOException {    
    19.         super(in);    
    20.     }    
    21.     
    22.     public CustomXWPFDocument() {    
    23.         super();    
    24.     }    
    25.     
    26.     public CustomXWPFDocument(OPCPackage pkg) throws IOException {    
    27.         super(pkg);    
    28.     }    
    29.     
    30.     /** 
    31.      * @param id 
    32.      * @param width 宽 
    33.      * @param height 高 
    34.      * @param paragraph  段落 
    35.      */  
    36.     public void createPicture(int id, int width, int height,XWPFParagraph paragraph) {    
    37.         final int EMU = 9525;    
    38.         width *= EMU;    
    39.         height *= EMU;    
    40.         String blipId = getAllPictures().get(id).getPackageRelationship().getId();    
    41.         CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();    
    42.         String picXml = ""    
    43.                 + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">"    
    44.                 + "   <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"    
    45.                 + "      <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"    
    46.                 + "         <pic:nvPicPr>" + "            <pic:cNvPr id=\""    
    47.                 + id    
    48.                 + "\" name=\"Generated\"/>"    
    49.                 + "            <pic:cNvPicPr/>"    
    50.                 + "         </pic:nvPicPr>"    
    51.                 + "         <pic:blipFill>"    
    52.                 + "            <a:blip r:embed=\""    
    53.                 + blipId    
    54.                 + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"    
    55.                 + "            <a:stretch>"    
    56.                 + "               <a:fillRect/>"    
    57.                 + "            </a:stretch>"    
    58.                 + "         </pic:blipFill>"    
    59.                 + "         <pic:spPr>"    
    60.                 + "            <a:xfrm>"    
    61.                 + "               <a:off x=\"0\" y=\"0\"/>"    
    62.                 + "               <a:ext cx=\""    
    63.                 + width    
    64.                 + "\" cy=\""    
    65.                 + height    
    66.                 + "\"/>"    
    67.                 + "            </a:xfrm>"    
    68.                 + "            <a:prstGeom prst=\"rect\">"    
    69.                 + "               <a:avLst/>"    
    70.                 + "            </a:prstGeom>"    
    71.                 + "         </pic:spPr>"    
    72.                 + "      </pic:pic>"    
    73.                 + "   </a:graphicData>" + "</a:graphic>";    
    74.     
    75.         inline.addNewGraphic().addNewGraphicData();    
    76.         XmlToken xmlToken = null;    
    77.         try {    
    78.             xmlToken = XmlToken.Factory.parse(picXml);    
    79.         } catch (XmlException xe) {    
    80.             xe.printStackTrace();    
    81.         }    
    82.         inline.set(xmlToken);   
    83.           
    84.         inline.setDistT(0);      
    85.         inline.setDistB(0);      
    86.         inline.setDistL(0);      
    87.         inline.setDistR(0);      
    88.           
    89.         CTPositiveSize2D extent = inline.addNewExtent();    
    90.         extent.setCx(width);    
    91.         extent.setCy(height);    
    92.           
    93.         CTNonVisualDrawingProps docPr = inline.addNewDocPr();      
    94.         docPr.setId(id);      
    95.         docPr.setName("图片" + id);      
    96.         docPr.setDescr("测试");   
    97.     }    
    98. }    

     

    展开全文
  • 设置模板然后另存为这里一定要选择对xml格式,否则后期模板图片设置的时候有问题,无法多张图片,被这坑过,勿踩!!!然后就是把xml文件直接修改后缀.ftl文件直接放到项目目录下代码:import java.io....

    java freemark导出word (模板、单张图片、多张图片源码)

    • 首先模板设置
    • 代码编辑
    • 设置word只读、全部
    • 环境设置、jar包

    模板设置

    这里写图片描述
    **
    设置模板然后另存为

    这里写图片描述

    这里一定要选择对xml格式,否则后期模板图片设置的时候有问题,无法多张图片,被这坑过,勿踩!!!

    然后就是把xml文件直接修改后缀.ftl文件直接放到项目目录下

    这里写图片描述

    代码:

    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.Writer;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.beanutils.DynaBean;

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

    /**
    * freemark导出word模板
    * @since JDK1.8
    * @history 2017年12月6日
    */
    public class WordExportService {

    private static WordExportService wordExport = null;
    
    public static WordExportService getInstance(){
        if(wordExport == null){
            wordExport = new WordExportService();
        }
        return wordExport;
    }
    
    private Configuration configuration = null;  
    private static JcglDao dao = new JcglDao();
    public WordExportService(){  
        configuration = new Configuration();  
        configuration.setDefaultEncoding("UTF-8");  
    }  
     //主方法 
    public void wordExport(HttpServletRequest request,HttpServletResponse response) throws IOException{
        String yjbh = request.getParameter("yjbh");
          String src = createWord(yjbh); 
          response.getWriter().write(src);
    }
    
    public String createWord(String yjbh){  
        List<DynaBean> beanList =dao.queryYjxxRwxq(yjbh);
        String yjmc = BeanUtils.getProperty(beanList.get(0), "YJMC");
        Map<String,Object> dataMap=new HashMap<String,Object>();  
        getData(dataMap,beanList);  
        configuration.setClassForTemplateLoading(this.getClass(), "/com/szboanda/ewaq/jcsj/service/template");  //FTL文件所存在的位置  
        Template t=null;  
        try {  
            t = configuration.getTemplate("rwgla.ftl"); //文件名  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        String path = GgdmService.getInstance().getDmnrByDmjAndDm("TPDZ","FILEPATH");
        File outFile = new File(path+"/"+yjmc+".doc");
    

    // File outFile = new File(“D:/vdir/”+Math.random()*10000+”.doc”);

        Writer out = null;  
        try {  
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
    
        try {  
            t.process(dataMap, out);  
            //设置word导出格式 如果不加读出的word是只读(false)true是非只读
            out.close();
            outFile.setWritable(true);
        } catch (TemplateException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return outFile.getName();
    }  
    
    private void getData(Map<String, Object> dataMap,List<DynaBean> beanList) {  
        DynaBean bean = beanList.get(0);
        List<DynaBean> qysbList = new ArrayList<DynaBean>();
        dataMap.put("rwmc", BeanUtils.getProperty(bean, "YJMC") );  
        dataMap.put("kssj", BeanUtils.getProperty(bean, "YJKSSJ").substring(0, 11));  
        dataMap.put("jssj", BeanUtils.getProperty(bean, "YJJSSJ").substring(0, 11));  
        dataMap.put("zrr", BeanUtils.getProperty(bean, "CJR"));
        dataMap.put("yjlb", BeanUtils.getProperty(bean, "YJLX"));
        dataMap.put("rwms", BeanUtils.getProperty(bean, "YJXX"));
        List<String> qymcList = new ArrayList<String>();
        List<String> wtmsList = new ArrayList<String>();
        List<List<String>> qytpList = new ArrayList<List<String>>();
        List<String> qyList = new ArrayList<String>();
        for(DynaBean beans: beanList){
            String yjbh = BeanUtils.getProperty(beans, "YJBH");
            String qybh = BeanUtils.getProperty(beans, "WRYBH");
            String qymc = BeanUtils.getProperty(beans, "WRYMC");
            qymcList.add(qymc);
            qysbList=dao.queryRwpfXq(yjbh,qybh);
            List<String> urlList = new ArrayList<String>();
            for(DynaBean qysbBean : qysbList){
                String url = BeanUtils.getProperty(qysbBean, "URL");
                urlList.add(url);
                qyList.add(qymc);
            }
            qytpList.add(urlList);
            String wtms = "";
            if(qysbList.size() > 0){
                 wtms = BeanUtils.getProperty(qysbList.get(0), "WTMS");
            }else{
                wtms = "未检查";
            }
            wtmsList.add(wtms);
        }
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();  
        for (int i = 0; i < qymcList.size(); i++) {  
            Map<String,Object> map = new HashMap<String,Object>();  
            map.put("qymc", qymcList.get(i));  
            map.put("wtms", wtmsList.get(i));  
            list.add(map);  
        } 
        List<String> imageMsgList = new ArrayList<String>();
        for (int i = 0; i < qytpList.size(); i++) {
            for (int j = 0; j < qytpList.get(i).size(); j++) {
                Map<String,Object> map = new HashMap<String,Object>();  
               // map.put("image", getImageStr(qytpList.get(i).get(j)));
               //图片封装多张就是多个String   集合就可以
                imageMsgList.add(getImageStr(qytpList.get(i).get(j)));
           }
          }  
        //这里是因为要与企业名称对应顾要一起按顺序添加
        List<Map<String,Object>> wryList = new ArrayList<Map<String,Object>>();  
        for (int i = 0; i < qyList.size(); i++) {  
            Map<String,Object> map = new HashMap<String,Object>();  
            map.put("qymc", qymcList.get(i));  
            map.put("image", imageMsgList.get(i));  
            wryList.add(map);  
        } 
    

    // dataMap.put(“imageMsgList”, imageMsgList); 多张图片显示时
    // dataMap.put(“qyList”,qyList);
    dataMap.put(“wryList”,wryList);
    dataMap.put(“list”, list);
    }

    public String getImageStr(String imgFile) {  
    

    // String imgFile = “d:/aa.png”;
    String path = GgdmService.getInstance().getDmnrByDmjAndDm(“TPDZ”,”IMGPATH”);
    imgFile = path+imgFile;
    InputStream in = null;
    byte[] data = null;
    try {
    in = new FileInputStream(imgFile);
    data = new byte[in.available()];
    in.read(data);
    in.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(data);
    }

    }

    ftl模板修改

    这里写图片描述

    通过w:tr搜索找到换行处添加
    <#list list as test>
    里面的值要用test.name代替 如果是一个就不用了后台代码封装就是一个list 不是map就不用
    如果是map

    列表循环

    这里写图片描述

    多张图片

    多张图片一定要切记找到如图然后增加
    src=”${“wordml://0300000”+qy_index+1+”.png”}”
    这里设置成变量 否则freemark只显示第一张图片

    <#list wryList as qy>

    ${qy.image}


    展开全文
  • java 模板导出word(含图片)

    千次阅读 2019-03-20 19:51:41
    1.先制作word模板 2.将该文档另存为 xml 文件 3.打开xml 文件 将对应的字段替换,比如 4.将xml文件保存成ftl格式的文档 5.相应的代码: package org.lq.ssm.gp.controller; ...

    https://www.cnblogs.com/xiaotian-222/p/7017619.html

    分为以下三个步骤:

    1.先制作word模板

    2.将该文档另存为 xml 文件

    3.打开xml 文件

     

    将对应的字段替换,比如

     

    4.将xml文件保存成ftl格式的文档

    5.相应的代码:

    package org.lq.ssm.gp.controller;
    
    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.Writer;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import sun.misc.BASE64Encoder;
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    
    public class wordController {
        
         private Configuration configuration = null;  
         
            public wordController(){  
                configuration = new Configuration();  
                configuration.setDefaultEncoding("UTF-8");  
            }  
              
            public static void main(String[] args) {  
                wordController test = new wordController();  
                test.createWord();  
            }  
              
            public void createWord(){  
                Map<String,Object> dataMap=new HashMap<String,Object>();  
                getData(dataMap);  
              
                System.out.println(this.getClass().getResource("/util"));
                configuration.setClassForTemplateLoading(this.getClass(), "/controller");  //FTL文件所存在的位置  
                Template t=null;  
                try {
    
                    t = configuration.getTemplate("baodan2.ftl"); //文件名
                } catch (IOException e) {
                    e.printStackTrace();  
                }
                File outFile = new File("H:/baodan/baodan.doc");  
                Writer out = null;  
                try {  
                    out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));  
                } catch (FileNotFoundException e1) {  
                    e1.printStackTrace();  
                }  
                   
                try {  
                    t.process(dataMap, out);  
                } catch (TemplateException e) {  
                    e.printStackTrace();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
          
            private void getData(Map<String, Object> dataMap) {  
                
                  List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
                dataMap.put("name", "");  
                dataMap.put("username", "");  
                dataMap.put("userzjh", "");  
                dataMap.put("userQygs", "");  
                dataMap.put("image", getImageStr());
          
            }  
            private String getImageStr() {
                 String imgFile = "H:\\JT1.jpg";
                 
                 InputStream in = null;
                 byte[] data = null;
                 try {
                     in = new FileInputStream(imgFile);
                     data = new byte[in.available()];
                     in.read(data);
                     in.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
                 BASE64Encoder encoder = new BASE64Encoder();        
                 return encoder.encode(data);
             }
         
    }

    注意:private Configuration configuration = new Configuration(); 过时解决办法

    Configuration configuration = new Configuration(Configuration.VERSION_2_3_23); 

    展开全文
  • word模板仅支持word2003,并且包含图片。工具技术IDE:eclipse JDK:1.7 Freemaker:2.3Word模板:准备工作:Word->FTL文件(很重要) 将需要用到图片的地方,全部使用真实图片代替 然后另存为xml文档 然后使用...
  • phpword 模板替换文字和图片

    千次阅读 2018-06-23 10:32:43
    个人建议使用composer下载phpword找到phpword/src/PhpWord/TemplateProcessor.php  修改为&lt;?php /** * This file is part of PHPWord - A pure PHP library for reading and writing * word processing ...
  • poi使用模板导出word图片

    千次阅读 2016-11-15 16:17:05
    1.下面是我做的加载模板导出带图片的...2.首先准备到你要导出的word模板,在要填充的模板中填入el表达式,如下图所示。 XXXX公司招聘高校毕业生应聘登记表 姓 名 ${name} 性 别 ${sex} 出生年月 ${birt
  • word模板中添加图片

    千次阅读 2014-01-02 16:23:20
    1.打开word文件  Java代码  /**   * 打开一个已存在的文档   *   * @param docPath   */   public void openDocument(String docPath)   
  • 1. 前提须知 * HWPF 是 POI 支持 Word(97-2003) 的Java组件,支持读写Word文档,但是写功能目前只实现一部分;它也提供更早版本的Word6和Word95版本的简单的文本摘录功能。...--poi 替换word模板...
  • POI对word模板内容替换及图片插入

    千次阅读 2019-09-23 21:46:45
    POI对word模板内容替换及图片插入 项目中需要将一些数据及图片填入word模板。看了一些前辈的博客,借鉴了一些东西,在此总结一下。如有不对的地方请指正,侵权请联系删除。本人使用的poi版本为3.9。 一、pom.xml <...
  • word模板运用

    2012-12-26 20:57:22
    大家知道,Word提供了各式各样的模板,在开始编辑Word文档尤其是专业性质... 下面就带大家来好好认识一下Word模板。 第一部分 Word模板的基础应用  Word模板的分类及存放位置  Word中的模板分为两类:一是系统
  • POI往word模板中写入数据和图片

    千次阅读 2018-09-13 08:28:09
    1、我找了两个模板,一个能...2、第一步,写一个word模板,用模板一,写入所有的文本数据和要循环好的框架,只是不添加图片,用模板二直接添加图片即可。源码下载 《初始模板》 《写入文字》 《写入图片》...
  • 核心代码为: protected void Button2_Click(object sender, EventArgs e) ... string templatePath = HttpContext.Current.Server.MapPath(@"~/模板表.doc"); Document doc = new Document(templatePath)
  • 找了很久Java处理word的方法,poi 处理docx还行,处理doc就总是有各种bug,spire.doc速度有点慢,而且收费,免费版有各种限制。jacob需要依赖服务器安装Microsoft word,而且并发时会有冲突。最终找到一个相对来说好...
  • freemarker+poi 模板生成 word添加图片

    千次阅读 2016-01-13 17:42:38
    freemarker+poi 模板生成 word添加图片初次接触这两种工具,希望能对大家有所帮助。poi模板: poi生成效果: freemarker生成效果: package com.test;import java.io.ByteArrayInputStream; import java.io....
  • java使用poi操作word插入图片、段落、表格准备工作创建word模板.docx文件编写模板格式.xml文件java上手poimaven依赖使用到的包具体应用对应封装方法 ----------图片插入指定位置操作图片操作使用到的工具类对应封装...
  • 最近在使用freemaker做一个word模板,里面包含大量表格、截图、超链接等数据、历时一周多,遇到很多坑,现在想想都后怕,现在简单总结一下,希望给以后的小伙伴提供帮助,少走弯路! 坑一:word打不开 可能原因: ...
  • word模板插入文字、图片

    千次阅读 2011-03-12 08:59:00
    建立word模板文件 person.dot 用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.Word引用 具体添加引用请参看 ...
  • 实验环境:POI3.7+Word2007...Word模板: 替换后效果: 代码: 1、入口文件 Java代码 public class Test {   public static void main(String[] args) throws Exception {   Map par
  • 模板样式:运行结果:需要的jar包:&lt;!-- poi Excel、Word操作--&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&...
  • 前言:表哥之前已经过一篇freemarker模板导出带表格word详细教程https://blog.csdn.net/erpenggg/article/details/81204061,为什么现在又要写一篇呢。 因为我这次的项目是在手机端导出下载并且查看,用上面的方法...
  • JEECG Word模板导出教程

    千次阅读 2019-04-11 14:16:53
    功能目标:读取word模板,解析数据导出word,对数据赋值 功能点1: 值替换 功能点2: 表格的创建 功能点3: 图片的插入 下面将根据这个三个功能点来做讲解 1.值替换 最基础的功能 在word中需要插入数据的地方加入{{...
  • 文字、图片、表格,目前我所涉及到的业务中只有这三个,其他情况没涉及到没研究,首先需要准备一个模板文件,即xml格式的模板,通过打开一个空白的word文档,另存为xml文件,即可得到一个空白的word模板(可使用...
  • JAVA使用POI-TL通过Word模板生成Word文件

    万次阅读 热门讨论 2018-08-15 16:04:24
    技术背景 很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单....这里主要讲解如何通过一个制作好的word模板文件,通过数据填充,生成加工好的word文件。 官方网站 http://deepoove.com/...
  • phpword 实现word文件模板字符替换

    千次阅读 2018-08-02 16:59:00
    红框内是要替换的内容,所以就需要用到PHPword模板替换功能,具体实现很简单,如下: 一、首先composer安装PHPword,就不多说了   二、然后是把模板中要替换的部分用变量代替,我这里因为是测试,所以变量名是...
  • 根据word模板导出word,支持文字和图片的插入。
  • 1.利用freemarker生成word文档,首先需要创建word文档模板(即.doc文档),需要用户填写的值可以使用${string}代替, 然后将doc另存为后缀为xml格式 再将保存后的month_2.xml后缀名改为.ftl. 在将word转化为xml...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,337
精华内容 10,534
关键字:

word目录模板图片