首页 > 代码库 > Java POI Word 写文档

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() + "}", entry105                         .getValue());106             }107             return doc;108         } catch (Exception e) {109             e.printStackTrace();110             return null;111         }112     }113 114 }

Java POI Word 写文档