Apache POI Word - 生成文档
概述
本文将讲述如何创建并保存一个空白的 word 文档,另外本文会揭示 docx 文档背后的存储秘密,让你看清 docx 文档的真面目。
为什么选择 XWPF 而不是 HWPF
事实上,poi 提供了两套 api 处理 word 文档:
- HWPF:它是 ”Horrible Word Processor format“ 的缩写。Horrible 翻译过来就是可怕的或者说恐怖的。这个名字本身就足以劝退,其它的不解释。这套 api 可用于生成 word 95 及以前的 Word 文档,一般后缀名为 .doc。
- XWPF:它是”XML Word Processor Format “的缩写。这套 api 可用于生成 Word 2007 及之后的 Word 文档,一般后缀名为 .docx。
生成文档
生成一个空白文档很简单,创建一个 XWPFDocument 对象,然后调用 write 写到一个本地路径即可。
XWPFDocument document = new XWPFDocument();
document.write(new FileOutputStream("D:\\tmp\\simpledoc.docx"));
document.close();
上面为了突出重点,代码没有遵循最佳实践,正常情况下应该使用 try resource 来释放资源。
package net.verytools.tutorial;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateDoc {
public static void main(String[] args) throws IOException {
try (XWPFDocument doc = new XWPFDocument()) {
try (FileOutputStream out = new FileOutputStream("D:\\tmp\\simpledoc.docx")) {
doc.write(out);
}
}
}
}
空白文档不空白
上面生成的文档在 'D:\tmp\simpledoc.docx' 路径下,打开该文档,可以看到文档中什么也没有,是一个空白文档。我们知道文档中不但可以放文字,还可以放图片、视频等,那么 Word 文档怎么存储这些内容的呢?
事实上,.docx 不过是个幌子,我们不妨将 .docx 改成 .zip,然后解压一下我们刚刚生成的文档。然后我们使用 vscode 打开解压的文件夹一探究竟。
如你所见,一个看似空白的文档其实由一堆 xml 构成的。其中 document.xml 是核心,包含了文档的主要内容,不过目前由于文档是空白的,因此这个文档中 <w:body/>
标签中什么内容都没有。
什么是 docx
docx 其实是包含一堆 xml 文件和媒体文件的压缩包。
总结
本文讲述了如何利用 poi api 来创建和保存文档,并揭示了 docx 文件的存储秘密,接下来我们逐步向文档中段落和其它内容。点这里直达下一篇:Apache POI Word - 段落。
有问题吗?点此反馈!
温馨提示:反馈需要登录