-
java
操作
wor
d
书签生成
word
模板
(
不用
jar
包
)
最近有个需求,
在
w
ord
模板文档上设置书签,
然后从数据库中查询数据,
填充到
word
文档书签位置
,
刚拿到需求时,使劲在网上找资料。幻想第三方
ja
r
包,帮我实现。有
Apatch
的<
/p>
POI,java2word,jcob
等,一直让我无法实现。
POI
操作
word
< br>只能获取
word
中的书签,并
不能进行操作
.java2word
可以实现,但是除了
包以外,还要一个
dll
文件放在
system32
文件夹下
,
环境部署在
linux
服务器上,
谁允许你放这样的文件,
结果死心了
.
下面新
建一个
word2007
文件告诉大家不用第三方技术怎么一一实现。
现在新建一个
word,
在请输入用户名处添加书签
userName,
请输入年龄处添加书签
ag
e
Word2007
版本其实就是
zip
格式,将新建
word
后缀名改
.zip,
解压会发现,里面全是文<
/p>
件夹
,
打开
wo
rd
文件夹会有一个
文件,
在
word
所有内容,
都
在这
xml
文件中
,
<
br>xml
。
请输入用户名
这是新建书签处的
内容,细心的会发现,书签处内容在
标签之间,
标签中的
w:id
跟
w:name
标识
书签的唯一,中间是书签处的内容,会不会可以这样呢,找到用
dom
或者
sax
解析这个
文档找到
标签,然后找到
标签,再找
到
标签里面的
标签
内
容
,
p>
替
换
就
Ok
了
呢
。
一
开
始
我
就
这
样
想
的
但
是
你
会
发
现
,
不是这样配套
的,如果是这样配套的,那按照前面的
说的直接解析找到
标签就
OK
了。
分析
xml
文件你会发现,其实
w:id= getNextSibling()
<
br>System.
w:name=
标签跟
标签是同级的,只是结束方式不同而已,所以算是兄弟节点,可以不可以找到
的兄弟节点,也就是
p>
标签,然后找到
标签,替换其文本。其实
w3c
中
Element
对象中提供了获取兄弟节点的方法,
获取下一个兄弟节点。
按照分析的思路是可以实现的。但是会不会有疑问,如果
的下一个兄弟节
点会不会不是
标签呢,是的,如果书签处无内容,就会是这样的
这样可以直接在
后面直接添加
标签
你多试几个文档你会发现,无论多复杂,
只要节操还在。
都会是这个样子。
除非那种非常恶
心的
word
。这个还得看你的
word
模板而论
.
这样的思路是可以实现了,但是该怎么用
java
搞定呢,下面贴出代码
publicstaticvoid
modifyDocumentAndSave()
throws
IOException,
ZipException, SAXException,
ParserConfigurationException,
TransformerException,
TransformerConfigurationException {
//
使用
打开文件
File file=
new
File(
);
boolean
exist=();
boolean
read=d();
boolean
write=te();
out
.println(exist)
;
System.
out
.prin
tln(read);
System.
out
.println(write);
ZipFile docxFile =
new
ZipFile(file);
//
返回
ZipEntry
应用程序接口
ZipEntry documentXML =
ry(
);
InputStream
documentXMLIS =
utStream(documentXML);
DocumentBuilderFactory dbf =
DocumentBuilderFactory.
newInstance
();
Document doc =
umentBuilder().parse(documentXMLIS);
//
linkMan tel proCode companyName fundName fundCode
sysProCode
Map
String>
bookMarkMap
=
new
HashMap
String>();
-
-
-
-
-
-
-
-
-
上一篇:处方缩写词
下一篇:BD Phoenix-100 系统培训手册-细菌鉴定仪