html转word
最后更新:2023-10-18 21:13:39
|
状态:未完成
html转word基于office open xml与poi等第三方工具无关
详细说明与源码参考 http://office.anyline.org/
可以用来替换书签、${key}格式的占位符注意这里的转换并不能把复杂的html完全转换成word,html中许多样式在word中是不支持的,比如多级嵌套的DIV.
应用场景:根据模板生成word报告.
报告中复杂的样式通过word模板创建,大部分内容可以通过${key}关键字替换,另外有一部分动态内容(如动态列,合并单元格等)
通过通过poi等工具成生word节点工作量太大。
但生成html比较简单。可以先通过java生成html,再通过当前工具把html转成word。
另外有一部分word中支持,但原生html中不支持的功能,如换页后表头重复等功能
以下replace的第一个参数写${key}中的key,或书签的名称,第二个参数可以是纯文本也可以是html,html可以带<style>样式。
执行save方法时会把replace中的html转换成word格式,并插入到${key}或书签的位置.
Document doc = new Document(new File("tmp.docx")); doc.replace("title","标题"); doc.replace("table","这是一段HTML"); doc.save();
需要注意的是word不支持多层DIV,如果需要复杂格式可以通过table实现。
支持标签
table,tr,td,div,span,br,ol,li
border解析了以下格式,没有解析两组值的格式
border:5px solid red;(按这个顺序)
border-color:red;
border-top-color:red;
border-color:red blue;
text-align:对齐
background-color:背景色
margin-left:左缩进
margin-right:右缩进
text-indent:首行缩进
margin-top:段落上间距
margin-bottom:段落上间距
padding与margin一样,padding值会覆盖margin只有一个会生效
line-height:行高
list-style-num:定义列表样式(先在模板中创建,再通过DocxUtil.checkListNumber(File docx, String key)查看创建的样式编号)
li:并不能用来包含div,table
需要把<ol>拆成两部分,保存 style="list-style-num:1"一致
复杂的结构用书签不要用${key}
重复表头tr.style上加repeat-header:true
<br/>要有结束符 不要单独写<br>
color可以auto
支持标签
table,tr,td,div,span,br,ol,li
border解析了以下格式,没有解析两组值的格式
border:5px solid red;(按这个顺序)
border-color:red;
border-top-color:red;
border-color:red blue;
text-align:对齐
background-color:背景色
margin-left:左缩进
margin-right:右缩进
text-indent:首行缩进
margin-top:段落上间距
margin-bottom:段落上间距
padding与margin一样,padding值会覆盖margin只有一个会生效
line-height:行高
list-style-num:定义列表样式(先在模板中创建,再通过DocxUtil.checkListNumber(File docx, String key)查看创建的样式编号)
li:并不能用来包含div,table
需要把<ol>拆成两部分,保存 style="list-style-num:1"一致
复杂的结构用书签不要用${key}
重复表头tr.style上加repeat-header:true
<br/>要有结束符 不要单独写<br>
color可以auto