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

博客讲述了在项目中如何处理富文本通知的保存和导出。通过使用WangEditor实现富文本编辑,保存为HTML格式。在导出时,遇到的问题是HTML在Word中显示为源代码且图片无法离线查看。作者尝试了多种方法,最终选择了Spire.DocforJava组件,它能够将HTML完美地插入到Word文档中,解决了图片显示和离线访问的问题。导出的文档格式良好,支持包括图片在内的复杂内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

<img src="http..."/>

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

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

收费 Spire-Doc-JAVA 官网

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

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

HashMap<String, Object> 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 生成完之后 导出就很容易了,这里不在写导出代码

文档导出后,大概是这样

 

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

帮助文档

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值