转载

Java 操作 office 的辅助工具

当使用 docx4j, poi等工具处理 office 文件时,如果想要实现复杂的功能,使用明面上的简单接口已经很难实现。这个时候如果配合一个工具,按照 XML 结构递归处理,就能实现很多强大的功能。

这里说的工具就是 Open XML SDK 2.5 for Microsoft Office

下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=30425

介绍: https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk

下载安装

Java 操作 office 的辅助工具

点击进入下载页面:

Java 操作 office 的辅助工具

选中这俩文件同时下载。

下载完成后,先安装第一个,然后安装第二个。

安装完成后,就有了下面的程序:

Java 操作 office 的辅助工具

简单使用

打开上面的程序:

Java 操作 office 的辅助工具

拖拽一个文件到左侧窗口:

Java 操作 office 的辅助工具

图上第一个按钮可以转换为代码,第二个按钮可以校验文件中的错误。

这里主要关注第一个功能,点击反编译后,如下显示:

Java 操作 office 的辅助工具

本文讲的是 Java 中的操作,因此上面的代码只能看看,很难在上面几个 Java 库中能一一对应起来。

根据自己关注的部分,展开相应的节点,效果如下:

Java 操作 office 的辅助工具

对 Java 中的这几个库来说,所有的 API 和上面的 XML 数据结构基本上是对应的,处理到某个节点后,通过观察这里的数据可以尝试下的去看是否存在获取(设置)某个值的方法,通过这个结构可以很方便的指导自己该做什么。

由于 XML 中的大量元素都是可以递归嵌套的,因此许多时候真正的实现代码并不复杂。

简单应用示例

比如在使用 docx4j 中,通过 开发工具 中的控件实现文字或图片替换时,替换文字的部分实现如下:

Java 操作 office 的辅助工具

ObjectFactory factory = Context.getWmlObjectFactory();

这里的 sdt 就是控件元素,和 XML 下面的 <w:sdt> 对应:

Java 操作 office 的辅助工具

替换文字这里就是要把上面数据结构中的 w:r(Run) 部分替换即可。但是实际上使用普通段落或者表格,在页头或者页尾位置时,会有各种各样的情况,如果能在一开始就把各种情况的 word 都提供一个模板,基本上能覆盖很全,即使后来出现特殊情况,也可以继续完善。

上面代码中,最终赋值的地方如下:

Java 操作 office 的辅助工具

通过上述简单示例的演示,当需要实现个性化功能时,基本上都能照着 XML 实现出来。

原文  https://blog.csdn.net/isea533/article/details/102703063
正文到此结束
Loading...