盒子
盒子

Java导出word文档

最近用到这个功能了,POI导出excel倒是很常见,导出word第一次用,以下是总结orz.

环境:(模板和jar包在文末,可以下载测试)

  • eclipse;
  • jdk1.7;
  • poi-3.10.1;

首先创建一个「word模板」,我们导出的内容是根据「word模板」定义好的内容导出的.

关键代码:

package com;

import java.io.File;
import java.io.FileInputStream;
import java.util.Map;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;

public class ExUtil {

/**
* @param args
* @throws Exception
*/

public HWPFDocument replaceDoc(String srcPath, Map<String, String> map)
throws Exception {


// 读取word模板
FileInputStream fis = new FileInputStream(new File(srcPath));
HWPFDocument doc = new HWPFDocument(fis);
// 替换字段
Range range = doc.getRange();
for (Map.Entry<String, String> entry : map.entrySet()) {
range.replaceText("${" + entry.getKey() + "}", entry.getValue());
}

return doc;

}
}

Test

package com;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.hwpf.HWPFDocument;

public class Test {

/**
* @param args
* @throws Exception
*/

public static void main(String[] args) throws Exception {

// 输出word文档路径
String destFile = "D:\\word\\下载.doc";
//File file = new File("C:\\Users\\Administrator\\Desktop\\WordTest\\下载.doc");
Map<String, String> map = new HashMap<String, String>();
map.put("name", "Zed");
map.put("sex", "男");
map.put("idCard", "12345");
map.put("year1", "2011");
map.put("month1", "2");
map.put("year2", "2015");
map.put("month2", "5");
map.put("gap", "3");
map.put("zhuanye", "计算机");
map.put("type", "本科");
map.put("bianhao", "2133");

// 读取模板路径
HWPFDocument document = new ExUtil().replaceDoc("D:\\word\\model.doc",
map);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
document.write(baos);
// 输出doc
OutputStream os = new FileOutputStream(destFile);
os.write(baos.toByteArray());

os.close();

}

}

利用POI导出含 图片 的方法暂时还没研究明白,导出word的文档总是没有图片,查阅了一下网上的说法是POI到处word图片有bug.还望高人指点一二.

jar包及模板下载

https://mega.nz/#!RwVU2TAJ!kSEJVLCbtTU17-yA3HDiymXCYIznKkMeD9ddGxwwfas