zoukankan      html  css  js  c++  java
  • Java POI Word 写文档

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

      1 package apache.poi;
      2 
      3 import java.io.ByteArrayInputStream;
      4 import java.io.ByteArrayOutputStream;
      5 import java.io.File;
      6 import java.io.FileInputStream;
      7 import java.io.FileOutputStream;
      8 import java.io.IOException;
      9 import java.io.OutputStream;
     10 import java.util.HashMap;
     11 import java.util.Map;
     12 
     13 import org.apache.poi.hwpf.HWPFDocument;
     14 import org.apache.poi.hwpf.usermodel.Range;
     15 import org.apache.poi.poifs.filesystem.DirectoryEntry;
     16 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
     17 
     18 
     19 public class ExportDocTest {
     20     
     21     public static void main(String[] args) {
     22         String destFile="D:\\11.doc";
     23         //#####################根据自定义内容导出Word文档#################################################
     24         StringBuffer fileCon=new StringBuffer();
     25         fileCon.append("               张大炮            男              317258963215223\n" +
     26                 "2011     09        2013     07       3\n" +
     27                 "    二炮研究              成人\n" +
     28                 "2013000001                             2013     07     08");
     29         fileCon.append("\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
     30         
     31         new ExportDocTest().exportDoc(destFile, fileCon.toString());
     32         
     33         //##################根据Word模板导出单个Word文档###################################################
     34         Map<String, String> map=new HashMap<String, String>();
     35         
     36         map.put("name", "Zues");
     37         map.put("sex", "男");
     38         map.put("idCard", "200010");
     39         map.put("year1", "2000");
     40         map.put("month1", "07");
     41         map.put("year2", "2008");
     42         map.put("month2", "07");
     43         map.put("gap", "2");
     44         map.put("zhuanye", "计算机科学与技术");
     45         map.put("type", "研究生");
     46         map.put("bianhao", "2011020301");
     47         map.put("nowy", "2011");
     48         map.put("nowm", "01");
     49         map.put("nowd", "20220301");
     50         //注意biyezheng_moban.doc文档位置,此例中为应用根目录
     51         HWPFDocument document=new ExportDocTest().replaceDoc("biyezheng_moban.doc", map);
     52         ByteArrayOutputStream ostream = new ByteArrayOutputStream();
     53         try {
     54             document.write(ostream);
     55             //输出word文件
     56             OutputStream outs=new FileOutputStream(destFile);
     57             outs.write(ostream.toByteArray());
     58             outs.close();
     59         } catch (IOException e) {
     60             e.printStackTrace();
     61         }
     62         
     63     }
     64     
     65     
     66     /**
     67      * 
     68      * @param destFile
     69      * @param fileCon
     70      */
     71     public void exportDoc(String destFile,String fileCon){
     72         try {
     73             //doc content
     74             ByteArrayInputStream bais = new ByteArrayInputStream(fileCon.getBytes());
     75             POIFSFileSystem fs = new POIFSFileSystem();
     76             DirectoryEntry directory = fs.getRoot(); 
     77             directory.createDocument("WordDocument", bais);
     78             FileOutputStream ostream = new FileOutputStream(destFile);
     79             fs.writeFilesystem(ostream);
     80             bais.close();
     81             ostream.close();
     82             
     83         } catch (IOException e) {
     84             e.printStackTrace();
     85         }
     86     }
     87     
     88     
     89     /**
     90      * 读取word模板并替换变量
     91      * @param srcPath
     92      * @param map
     93      * @return
     94      */
     95     public HWPFDocument replaceDoc(String srcPath, Map<String, String> map) {
     96         try {
     97             // 读取word模板
     98             FileInputStream fis = new FileInputStream(new File(srcPath));
     99             HWPFDocument doc = new HWPFDocument(fis);
    100             // 读取word文本内容
    101             Range bodyRange = doc.getRange();
    102             // 替换文本内容
    103             for (Map.Entry<String, String> entry : map.entrySet()) {
    104                 bodyRange.replaceText("${" + entry.getKey() + "}", entry
    105                         .getValue());
    106             }
    107             return doc;
    108         } catch (Exception e) {
    109             e.printStackTrace();
    110             return null;
    111         }
    112     }
    113 
    114 }

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

  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/shihujiang/p/2442013.html
Copyright © 2011-2022 走看看