栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

html 导出为word,Spire.Doc for Java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

html 导出为word,Spire.Doc for Java实现

项目中的功能,大概是这样,

要在站内发送通知,表单大概是 通知标题,通知时间,发送单位等,最重要的就是一个通知正文,正文使用富文本实现(这个使用wangeditor实现),点击保存后这些信息保存在后台,用户登录进来后会展示发送给自己的通知,因为富文本保存的就是html,所以展示也很好做,直接显示在页面就可以。

后续的话加了一个导出的功能,导出的字段包括 通知标题,通知时间,发送单位,还有就是通知正文。除去通知正文的话,还是很好做的,直接定义一个模板,然后用easypoi向模板中填充信息就可以,唯独是这个富文本,由于是html内容,直接填充进模板中显示的也是html,然后开始着手解决这个问题,网上搜了很多资料,大概的意思都是把html 通过 POIFSFileSystem 写进文件中,这样虽然能实现功能,但是有很多地方不太好。

1.文件打开之后是web版式,看起来不太好

2.导出的其实还是一个html

上边这两点其实都还好,最难的是,如果你的富文本包含图片的话,那就比较难搞了。

因为导出的这个html本质上还是一个html,而html 中图片肯定是这样

 

如果电脑在不联网的情况下,或者图片不存在的情况下,word中的图片会显示不出来,这是最致命的。

然后继续搜索资料的时候就发现了Spire.Doc for Java(收费的,也有免费版),而且完美实现了我想要的功能

收费 Spire-Doc-JAVA 官网

免费版 Free Spire.Doc for Java | 100% 免费 Java Word 组件

我的功能就是按照模板生成文档,然后在生成的文档后插入正文内容,大概代码如下

HashMap resData = new HashMap<>();
//需要填充到模板的信息
resData.put("data",data);

//查询模板
File template = new File("模板");
//3.生成文档
 InputStream inputStream = new ByteArrayInputStream(template.getFileBytes());

Document doc = new Document();
        
doc1.loadFromStream(inputStream,FileFormat.Doc);


//定位到书签"SimpleBookmark"
 BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);
 bookmarkNavigator.moveToBookmark("SimpleBookmark");

//使用文本替换原书签的内容, false表示不保留原来的格式
  bookmarkNavigator.replaceBookmarkContent("这是要替换的信息", true);

//在文档后 添加 html
Section lastSection = doc.getLastSection();
lastSection.addParagraph().appendHTML("");

//保存文档
doc.saveToFile("xxx.doc", FileFormat.Doc);

大概就是这样,word 生成完之后 导出就很容易了,这里不在写导出代码

文档导出后,大概是这样

 

当然,他能做的不止这些,还有好多功能,比如合并文档,添加也没页脚 等等等等,大家可以直接访问他的官网帮助文档

帮助文档

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号