2、docx4j一个专业的hello world入门程序介绍

docx4j
placeholder image
admin 发布于:2018-10-13 22:40:15
阅读:loading

基本介绍

关于这个 hello world 的示例本来准备放在第一篇文章中的,但是后来觉得一个能够轻松入门的程序也尤为重要,毕竟由于docx4j很强大,对于入门并且能够深入的来说才是最主要的,本篇文章主要是编程式的代码实现一个单文本的代码实现。

首先,我们先新建一个docx文档,并且写入文本“hello,陈dd”,然后使用解压缩软件打开这个docx文档,找到document.xml,打开后发现它是有这么一堆的xml标签构成的,p作为一个段落标记,r为一小块,rpr为相应快的样式属性集,t对应的为文本标签,参考如下图所示:

image.png

其实这个图并不太友好,之前在Word2007下创建的一个段落文本为<w:p><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t>hello,陈dd</w:t></w:r></w:p>,所有的文本内容均在一个t标签内,此时我们需要关注一下开发包中的《Docx4j_GettingStarted.pdf》快速入门文档,它里面有介绍到这些标签类,当然也有包含一个hello world的xml文档结构,也就是这些标签对应的Java对应类,参考如下图所示:

image.png

参考代码

所以加上一个文档的生成和保存代码外,它们的代码可参考如下:

    package cn.chendd.docx4j.examples;

     

    import java.io.File;

    import java.util.List;

     

    import org.docx4j.jaxb.Context;

    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

    import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

    import org.docx4j.wml.ObjectFactory;

    import org.docx4j.wml.P;

    import org.docx4j.wml.R;

    import org.docx4j.wml.RFonts;

    import org.docx4j.wml.RPr;

    import org.docx4j.wml.STHint;

    import org.docx4j.wml.Text;

     

    public class HelloWorldTest {

     

       public static void main(String[] argsthrows Exception {

          //创建一个文档

          WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();

          //获得这个文档的document跟标签对象

          MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();

          //获取到body标签,并向body中添加子级元素

          List<Object> body = mainDocumentPart.getContent();

          //工厂类,可创建各种标签对象

          ObjectFactory factory = Context.getWmlObjectFactory();

          R r = factory.createR();

          RPr rpr = factory.createRPr();

          RFonts rFont = factory.createRFonts();

          STHint sthInt = STHint.EAST_ASIA;

          rFont.setHint(sthInt);

          rpr.setRFonts(rFont);

          r.setRPr(rpr);

          Text text = factory.createText();

          text.setValue("hello,陈dd");

          r.getContent().add(text);

          P p = factory.createP();

          p.getContent().add(r);

          body.add(p);

          String outPath = System.getProperty("user.dir") + "/template/out/helloworld.docx";

          wordPackage.save(new File(outPath));

       }

      

    }

运行结果

代码运行结果参考为:

image.png

另外,在docx4j的所有示例中,当然也不会少于helloworld的示例,见NewDocxHelloWorld.java文件,代码1行,大家可以运行它的示例代码,将代码生成出来的docx文档使用压缩工具打开看看其中的文档结构,事实上,上述使用的方式在实际工作中比较实用,因为更多的功能实现是我们并不知道代码应该怎么写,但是我们可以通过通过以压缩包的方式打开这个文档,观察其中的xml结构来进行代码上的实现。

相关下载

附上上述代码生成的文件:

helloworld.docx


 点赞


 发表评论

当前回复:作者

 评论列表


留言区