java poi word 实例_Java POI Word 写文档

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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值