一个使用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 }

java操作word的更多相关文章

  1. Java 操作Word书签(二):添加文本、图片、表格到书签内容

    在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...

  2. Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包

    可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...

  3. [转载]java操作word(一)

    一. 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印.此需求可以通过用程序填充数据到word模板中来实现.所谓模 ...

  4. [原创]java操作word(一)

    一. 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印.此需求可以通过用程序填充数据到word模板中来实现.所谓模 ...

  5. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  6. Java 操作Word书签(三):用文本、图片、表格替换书签

    本篇文章将继续介绍通过Java来操作Word书签的方法,即替换Word中已有书签,包括用新的文本.图片.表格等替换原有书签处的内容. 使用工具:Free Spire.Doc for Java (免费版 ...

  7. Java 操作Word表格

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  8. java操作word,excel,pdf

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  9. JAVA操作word方法

    jacob,功能非常强大,能操作word,excel和pdf.下载地址是:http://sourceforge.net/projects/jacob-project/ 1.新建一个文档  Dispat ...

随机推荐

  1. 记一次zookeeper集群搭建错误的排除

    zookeeper官网上的文档说得很清楚. http://zookeeper.apache.org/doc/r3.5.1-alpha/zookeeperAdmin.html#sc_designing ...

  2. 1维FDTD仿真

    FDTD基本原理是把麦克斯韦方程胡两个矢量旋度方程写成差分形式,利用数值方法求其解. 假设电磁场传播方向为x轴方向,电场只有z轴方法分量,磁场只有y轴方向分量.两个旋度方程可以写成下列形式 电场.磁场 ...

  3. Linux (二) vi

    1  步骤 1)  vi  test.txt 进入一般模式 2)   i    进入编辑模式,输入内容 3)  Esc 回到一般模式 4)  :wq 存储后退出 2  编辑模式 [i] 光标处插入, ...

  4. UVA 439 Knight Moves --DFS or BFS

    简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC. 这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个 ...

  5. AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)

    1009 产生数 2002年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descriptio ...

  6. Unity-WIKI 之 AllocationStats(内存分配)

    组件功能 allocationstats是一个简单的辅助工具,用于显示您的应用程序分配多少内存.它采用GC.GetTotalMemory来跟踪内存使用 使用方法 添加 Allocmem.cs 到场景中 ...

  7. Sql注入截取字符串常用函数

    在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串.本文中主要列举三个函数和该函数注入过程中的一些用 ...

  8. javascript发送验证码

    一个发送验证码的javascript代码 var T = 0; var handle = null; var event = null; $(function(){ $('#sendCode').cl ...

  9. usb驱动开发9之设备描述符

    前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),配置描述符,最后分析设备如何包括这些描述符.首先记住,在usb的世界里,设备大于配置,配置大于接口,接 ...

  10. JayProxy的设置

    1. mac http://pac.jayproxy.com/jayproxy/jayproxy.pac 2. wifi http://pac.jayproxy.com/jayproxy/m.pac ...