• Java POI Word 写文档


    一个使用Apache POI写word文档的实例:

    package apache.poi;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.poifs.filesystem.DirectoryEntry;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    
    public class ExportDocTest {
    
        public static void main(String[] args) {
            String destFile = "D:\11.doc";
            // #####################根据自定义内容导出Word文档#################################################
            StringBuffer fileCon = new StringBuffer();
            fileCon
                    .append("               张大炮            男              317258963215223
    "
                            + "2011     09        2013     07       3
    "
                            + "    二炮研究              成人
    "
                            + "2013000001                             2013     07     08");
            fileCon
                    .append("
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ");
    
            new ExportDocTest().exportDoc(destFile, fileCon.toString());
    
            // ##################根据Word模板导出单个Word文档###################################################
            Map<String, String> map = new HashMap<String, String>();
    
            map.put("name", "Zues");
            map.put("sex", "男");
            map.put("idCard", "200010");
            map.put("year1", "2000");
            map.put("month1", "07");
            map.put("year2", "2008");
            map.put("month2", "07");
            map.put("gap", "2");
            map.put("zhuanye", "计算机科学与技术");
            map.put("type", "研究生");
            map.put("bianhao", "2011020301");
            map.put("nowy", "2011");
            map.put("nowm", "01");
            map.put("nowd", "20220301");
            // 注意biyezheng_moban.doc文档位置,此例中为应用根目录
            HWPFDocument document = new ExportDocTest().replaceDoc(
                    "biyezheng_moban.doc", map);
            ByteArrayOutputStream ostream = new ByteArrayOutputStream();
            try {
                document.write(ostream);
                // 输出word文件
                OutputStream outs = new FileOutputStream(destFile);
                outs.write(ostream.toByteArray());
                outs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        /**
         * 
         * @param destFile
         * @param fileCon
         */
        public void exportDoc(String destFile, String fileCon) {
            try {
                // doc content
                ByteArrayInputStream bais = new ByteArrayInputStream(fileCon
                        .getBytes());
                POIFSFileSystem fs = new POIFSFileSystem();
                DirectoryEntry directory = fs.getRoot();
                directory.createDocument("WordDocument", bais);
                FileOutputStream ostream = new FileOutputStream(destFile);
                fs.writeFilesystem(ostream);
                bais.close();
                ostream.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 读取word模板并替换变量
         * 
         * @param srcPath
         * @param map
         * @return
         */
        public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {
            try {
                // 读取word模板
                FileInputStream fis = new FileInputStream(new File(srcPath));
                HWPFDocument doc = new HWPFDocument(fis);
                // 读取word文本内容
                Range bodyRange = doc.getRange();
                // 替换文本内容
                for (Map.Entry<String, String> entry : map.entrySet()) {
                    bodyRange.replaceText("${" + entry.getKey() + "}", entry
                            .getValue());
                }
                return doc;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
    }

    例子中用到的附件(点击下载)

    本文转自:http://www.cnblogs.com/shihujiang/archive/2012/04/11/2442013.html

  • 相关阅读:
    JVM、GC与HashMap
    自己用到的相关Linux命令,谨以记录
    HashMap
    Groovy简洁开发,我用到的简洁之处
    java,大数据批量插入、更新
    JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里
    maven安装 maven上传jar包到库里面
    关于java中是引用传递还是值传递的问题
    SQL优化
    servlet生命周期与工作原理
  • 原文地址:https://www.cnblogs.com/dreammyle/p/4606856.html
Copyright © 2020-2023  润新知