poi.hwpf 操作word 越详细越好

望舒 2012-03-18 04:40:21
越详细越好
图片操作
图片水印
还有其他在项目中经常用到的东西,希望大家能分享下,网上许多东东都是没有解决问题的东东希望
在csdn里集合大家的力量能有个好的结果


/***
* 实现Word模板读取替换内容输出
* @param filePath 模板路径
* @param haderMap 页眉数据
* @param bodyMap 内容数据
* @param footMap 页脚数据
*/
public static void readwriteWord(String filePath, Map<String,String> haderMap,Map<String ,String> bodyMap,Map<String,String> footMap){
//读取word模板
FileInputStream in = null;
try {
in = new FileInputStream(new File(filePath));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
HWPFDocument hdt = null;
try {
hdt = new HWPFDocument(in);
} catch (IOException e1) {
e1.printStackTrace();
}
//读取word页眉内容
Range harderRange= hdt.getHeaderStoryRange();
//替换word页眉内容
for(Map.Entry<String, String> entry:haderMap.entrySet()){
harderRange.replaceText("${" + entry.getKey() + "}", entry.getValue());
}

//读取页脚内容
Range footRange=hdt.getFootnoteRange();
//替换页脚内容
for(Map.Entry<String,String> entry:footMap.entrySet()){
footRange.replaceText("${" + entry.getKey().trim() + "}", entry.getValue());
}

//读取word文本内容
Range bodyRange = hdt.getRange();
//替换文本内容
for (Map.Entry<String,String> entry: bodyMap.entrySet()) {
bodyRange.replaceText("${" + entry.getKey() + "}",entry.getValue());

}

// PicturesTable picturesTable= hdt.getPicturesTable();
// //hdt.addPicture(bytes, XWPFDocument.PICTURE_TYPE_JPEG);
//
// FileInputStream fis = new FileInputStream("F:\\picture\\http_imgload.jpg");
// //将图片添加到xlsx文件
// int picinx = hdt.addPicture(fis, XWPFDocument.PICTURE_TYPE_JPEG);
// fis.close();
//



ByteArrayOutputStream ostream = new ByteArrayOutputStream();
String fileName = ""+System.currentTimeMillis();
fileName += ".doc";
FileOutputStream out = null;
try {
out = new FileOutputStream("E:\\test\\"+fileName,true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
hdt.write(ostream);
} catch (IOException e) {
e.printStackTrace();
}
//输出字节流
try {
out.write(ostream.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
}


注:次代码只能在 poi 3.8 _4 的版本上使用
我希望能有人告诉我 其他的高级的用法 谢谢
...全文
3724 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lees889 2014-10-22
  • 打赏
  • 举报
回复
不知POI对word操作有没有插入分页的方法??
lord_is_layuping 2013-07-26
  • 打赏
  • 举报
回复
引用 6 楼 zyc901016 的回复:
这个方法好像有BUG,简单的doc文件可以,如果复杂点就over了,我测试的时候表格如果大一点就不行了
遇到了相同的问题,大表格分页全都乱了
蔚林 2013-06-18
  • 打赏
  • 举报
回复
亲爱的楼主大人,我想请问,如果想用poi新建一个word文档,然后再新建一个表格插入到该文档中,该怎么做啊,求代码,求指点,很急用呢,有劳您了呢~~~
shenzzg 2013-04-12
  • 打赏
  • 举报
回复
//读取页脚内容 Range footRange=hdt.getFootnoteRange(); //替换页脚内容 for(Map.Entry<String,String> entry:footMap.entrySet()){ footRange.replaceText("${" + entry.getKey().trim() + "}", entry.getValue()); } 怎么读取页眉内容,????
kimmking 2012-11-20
  • 打赏
  • 举报
回复
插入图片是可以的。见我blog
chenhu87 2012-05-11
  • 打赏
  • 举报
回复
求解 求解 兄弟 为什么我一生成 中文文件名就乱码
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-excel;charset=utf-8</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">inline;filename="影像统计.xlsx"</param>
<param name="bufferSize">4096</param>
</result>
在线等待
「已注销」 2012-05-11
  • 打赏
  • 举报
回复
插入图片不成功,兄弟,能告诉我怎么插入图片吗
昨日凡阳 2012-05-10
  • 打赏
  • 举报
回复
其他的高级用法,你还不如去看poi api。
「已注销」 2012-05-10
  • 打赏
  • 举报
回复
插入图片不成功,,,
zyc901016 2012-04-27
  • 打赏
  • 举报
回复
这个方法好像有BUG,简单的doc文件可以,如果复杂点就over了,我测试的时候表格如果大一点就不行了
望舒 2012-03-31
  • 打赏
  • 举报
回复
不想用控件,兼容性部好,还要在服务器安装东西
txenergy 2012-03-22
  • 打赏
  • 举报
回复
页眉页脚的样式不好控制,还是不够灵活啊。最好引入一个类似word控件就OK了。
望舒 2012-03-21
  • 打赏
  • 举报
回复
帮帮忙啊
望舒 2012-03-18
  • 打赏
  • 举报
回复
有做过图片插入,水印的不?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧