1 packageapache.poi;2
3 importjava.io.ByteArrayInputStream;4 importjava.io.ByteArrayOutputStream;5 importjava.io.File;6 importjava.io.FileInputStream;7 importjava.io.FileOutputStream;8 importjava.io.IOException;9 importjava.io.OutputStream;10 importjava.util.HashMap;11 importjava.util.Map;12
13 importorg.apache.poi.hwpf.HWPFDocument;14 importorg.apache.poi.hwpf.usermodel.Range;15 importorg.apache.poi.poifs.filesystem.DirectoryEntry;16 importorg.apache.poi.poifs.filesystem.POIFSFileSystem;17
18
19 public classExportDocTest {20
21 public static voidmain(String[] args) {22 String destFile="D:\\11.doc";23 //#####################根据自定义内容导出Word文档#################################################
24 StringBuffer fileCon=newStringBuffer();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 newExportDocTest().exportDoc(destFile, fileCon.toString());32
33 //##################根据Word模板导出单个Word文档###################################################
34 Map map=new HashMap();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 = newByteArrayOutputStream();53 try{54 document.write(ostream);55 //输出word文件
56 OutputStream outs=newFileOutputStream(destFile);57 outs.write(ostream.toByteArray());58 outs.close();59 } catch(IOException e) {60 e.printStackTrace();61 }62
63 }64
65
66 /**
67 *68 *@paramdestFile69 *@paramfileCon70 */
71 public voidexportDoc(String destFile,String fileCon){72 try{73 //doc content
74 ByteArrayInputStream bais = newByteArrayInputStream(fileCon.getBytes());75 POIFSFileSystem fs = newPOIFSFileSystem();76 DirectoryEntry directory =fs.getRoot();77 directory.createDocument("WordDocument", bais);78 FileOutputStream ostream = newFileOutputStream(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 *@paramsrcPath92 *@parammap93 *@return
94 */
95 public HWPFDocument replaceDoc(String srcPath, Mapmap) {96 try{97 //读取word模板
98 FileInputStream fis = new FileInputStream(newFile(srcPath));99 HWPFDocument doc = newHWPFDocument(fis);100 //读取word文本内容
101 Range bodyRange =doc.getRange();102 //替换文本内容
103 for (Map.Entryentry : map.entrySet()) {104 bodyRange.replaceText("${" + entry.getKey() + "}", entry105 .getValue());106 }107 returndoc;108 } catch(Exception e) {109 e.printStackTrace();110 return null;111 }112 }113
114 }