`

docx4j学习网站

    博客分类:
  • java
 
阅读更多
docx4j学习网址:http://www.docx4java.org/trac/docx4j

一个简单的例子:

由于ooxml文档规范纳入ISO标准,所以世界一些开源组织对OOXML的java开发包的研发也越来越快,除了apache的POI项目宣布对office2007的支持,其他组织也开始加紧行动,相比行动比较迅速的有dev.plutext.org组织的docx4j这个包比较成熟些,docx提供3种方法来操作docx文档,现在我们可以来看看docx4j是怎么操作docx文档的:
Java代码 
package org.docx4j.samples; 
import java.io.File; 
import java.math.BigInteger; 
import org.docx4j.customxml.ObjectFactory; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
import org.docx4j.openpackaging.io.SaveToZipFile; 
import org.docx4j.wml.STPageOrientation; 
 
/**
* 创建ooxml文档
* @素馨花
* @version 1.0
*/ 
public class CreateWordprocessingMLDocument { 
 
    public static void main(String[] args) throws Exception { 
         
        System.out.println( "Creating package.."); 
        //创建文档处理对象 
        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); 
         
        //插入文字方法-1(快捷方法,忽略详细属性) 
            wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Title", "赛灵通(www.xerllent.cn)工作文档标题"); 
            wordMLPackage.getMainDocumentPart().addParagraphOfText("赛灵通项目(Xerllent Projects)是一项基于j2ee技术的企业信息化系统研发计划!"); 
 
 
         
         
        //插入文字方法-2(对象构造法,可以操作任何属性) 
            /**
             *  To get bold text, you must set the run's rPr@w:b,
             *  so you can't use the createParagraphOfText convenience method
             *  org.docx4j.wml.P p = wordMLPackage.getMainDocumentPart().createParagraphOfText("text");//创建无格式文本代码段
             * */ 
 
            org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory();//文档子对象工厂 
             
            org.docx4j.wml.P  p = factory.createP();//创建段落P 
 
                //创建文本段R内容 
                org.docx4j.wml.R  run = factory.createR();//创建文本段R 
                    org.docx4j.wml.Text  t = factory.createText();//创建文本段内容Text 
                    t.setValue("text"); 
                run.getRunContent().add(t);//Text添加到R 
                //设置文本段R属性,Optionally, set pPr/rPr@w:b 
                org.docx4j.wml.RPr rpr = factory.createRPr(); 
                    org.docx4j.wml.BooleanDefaultTrue b = new org.docx4j.wml.BooleanDefaultTrue();//创建带缺省值的boolen属性对象 
                    b.setVal(true);      
                rpr.setB(b); 
                run.setRPr(rpr);//设置文本段R属性 
             
            p.getParagraphContent().add(run);//R添加到P 
             
            // 创建默认的段落属性,并加入到段落对象中去 
            org.docx4j.wml.PPr ppr = factory.createPPr(); 
                org.docx4j.wml.ParaRPr paraRpr = factory.createParaRPr(); 
                ppr.setRPr(paraRpr); 
            p.setPPr( ppr );//段落属性PPr添加到P 
             
          //将P段落添加到文档里 
          wordMLPackage.getMainDocumentPart().addObject(p); 
         
         
            //动态插入打印页面及分栏设置,这时一个A3幅面,页面分2栏的设置,试卷页面 
                org.docx4j.wml.SectPr sp= factory.createSectPr(); 
                    org.docx4j.wml.SectPr.PgSz pgsz=factory.createSectPrPgSz();//<w:pgSz w:w="23814" w:h="16840" w:orient="landscape" w:code="8"/> 
                        pgsz.setW(BigInteger.valueOf(23814L)); 
                        pgsz.setH(BigInteger.valueOf(16840L)); 
                        pgsz.setOrient(STPageOrientation.LANDSCAPE); 
                        pgsz.setCode(BigInteger.valueOf(8L)); 
                    sp.setPgSz(pgsz); 
                     
                    org.docx4j.wml.SectPr.PgMar pgmar= factory.createSectPrPgMar();//<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/> 
                        pgmar.setTop(BigInteger.valueOf(1440)); 
                        pgmar.setRight(BigInteger.valueOf(1440)); 
                        pgmar.setBottom(BigInteger.valueOf(1440)); 
                        pgmar.setLeft(BigInteger.valueOf(1440)); 
                        pgmar.setHeader(BigInteger.valueOf(720)); 
                        pgmar.setFooter(BigInteger.valueOf(720)); 
                    sp.setPgMar(pgmar); 
 
                    org.docx4j.wml.CTColumns cols=factory.createCTColumns();//<w:cols w:num="2" w:space="425"/> 
                        cols.setNum(BigInteger.valueOf(2)); 
                        cols.setSpace(BigInteger.valueOf(425)); 
                    sp.setCols(cols); 
 
                    org.docx4j.wml.CTDocGrid grd=factory.createCTDocGrid();//<w:docGrid w:linePitch="360"/> 
                        grd.setLinePitch(BigInteger.valueOf(360)); 
                    sp.setDocGrid(grd); 
                     
                wordMLPackage.getMainDocumentPart().addObject(sp); 
 
 
 
 
         
        // 插入文字方法-3(更加简便快捷的插入内容方法,可以操作任何属性,但必须熟悉ooxml文档格式) 
            //自定义标签转化的时候,必须加xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"语句 
            String str = "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ><w:r><w:rPr><w:b /></w:rPr><w:t>Bold, just at w:r level</w:t></w:r></w:p>"; 
            wordMLPackage.getMainDocumentPart().addObject(org.docx4j.XmlUtils.unmarshalString(str)); 
             
            //自定义标签转化的时候,必须加xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"语句 
            String str1 = "<w:sectPr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" w:rsidR=\"00F10179\" w:rsidRPr=\"00CB557A\" w:rsidSect=\"001337D5\"><w:pgSz w:w=\"23814\" w:h=\"16840\" w:orient=\"landscape\" w:code=\"8\"/><w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\" w:header=\"720\" w:footer=\"720\" w:gutter=\"0\"/><w:cols w:num=\"2\" w:space=\"425\"/><w:docGrid w:linePitch=\"360\"/></w:sectPr>"; 
            wordMLPackage.getMainDocumentPart().addObject(org.docx4j.XmlUtils.unmarshalString(str1) ); 
             
            System.out.println( ".. done!"); 
         
         
        // Now save it  
        wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/sample-docs/bolds.docx") ); 
         
        System.out.println("Done."); 
                 
    } 
     
分享到:
评论

相关推荐

    DOCX4J jar包

    docx4j 用的jar包,docx4j学习网址:http://www.docx4java.org/trac/docx4j

    Docx4J入门指南(英文)

    Docx4J是一个强大的开源Java库,它主要用于处理Word2007(.docx)、PowerPoint2007(.pptx)和Excel2007(.xlsx)文件,特别在处理Word文档方面,与Apache POI相比具有更强大的功能。Docx4J的官方入门指南是英文版本...

    Docx4j office word java

    本文将深入探讨Docx4j在处理Word文档方面的应用,以及如何利用提供的资源进行学习。 首先,标题中的“Docx4j office word java”表明这是一个使用Java编程语言与Microsoft Word文档交互的工具。Docx4j不仅支持读取...

    docx4j根据书签替换word中的内容

    在IT行业中,尤其是在文档处理领域,`docx4j`是一个非常重要的库,它允许开发者通过编程方式操作Microsoft Office Open XML...对于需要自动化处理Word文档的开发工作,`docx4j`是一个强大的工具,值得深入学习和使用。

    docx4j项目(javadoc文档、源码及示例)

    **docx4j项目概述** docx4j是一款强大的Java库,专为处理Microsoft Office 2007及更高版本的文件格式而设计,包括Word(.docx)、Excel...通过深入学习和实践,开发者可以充分利用docx4j解决各种复杂的文档操作需求。

    docx4j api

    在学习和使用docx4j时,以下是一些核心知识点和关键功能: 1. **文件格式理解**:首先,了解OOXML文件结构是必要的,它们是由一系列XML文档和资源文件组成的ZIP包。docx4j通过解析和操作这些内部XML来实现文件的...

    docx4j以及依赖的全套jar包

    《docx4j及其依赖的jar包:实现高效文档处理》 在信息技术领域,文档处理是日常工作中不可或缺的一部分。docx4j是一个强大的Java库,专门用于处理Microsoft Office Open XML (OOXML)格式的文件,如.docx和.xlsx。这...

    docx4j 替换文本

    《docx4j 替换文本》 在文档处理领域,docx4j是一个非常实用的Java库,它专门用于创建、修改和转换Open XML格式的文档,如.docx、.pptx...在实际工作中,结合源码学习和使用docx4j,将会对提升我们的IT技能大有裨益。

    docx4j 动态生成表格 (一 )

    在IT行业中,动态生成文档是一项常见的任务,尤其在企业级应用和数据分析中。docx4j是一个强大的Java库,专门用于处理...通过学习和熟练使用docx4j,你可以提高工作效率,同时确保生成的文档具有高度的定制性和一致性。

    docx4j-community-8.1.5.zip

    documentation目录可能包含详细的用户手册和API文档,是学习和使用docx4j的重要参考资料;optional目录可能包含一些可选的依赖库,资源(resources)目录则可能存储了一些默认的模板或样式文件;legals文件可能包含...

    word转pdf所用docx4j

    docx4j 用的jar包,docx4j学习网址:http://www.docx4java.org/trac/docx4j

    docx4j(jar,src,依赖JAR)

    **docx4j** 是一个Java库,专门用于处理Microsoft Office Open XML (OOXML)格式,尤其是.docx、.pptx和.xlsx文件。这个库提供了丰富的API,...通过深入学习和实践,你可以利用docx4j实现复杂、自定义化的文档处理需求。

    使用docx4j编程创建复杂的.docx格式的word文档

    docx4j是一个强大的Java库,它允许开发者通过编程方式生成和修改Microsoft Office Open XML (OOXML) 格式的文档,包括.docx。这篇博客文章“使用docx4j编程创建复杂的.docx格式的word文档”提供了关于如何使用这个库...

    docx4j-3.3.7全套jar及其相关依赖

    《docx4j-3.3.7:深入解析与应用》 docx4j是一款强大的Java库,专用于处理Microsoft Office Open XML (OOXML)格式的文档,如.docx和.xlsx。它允许开发者在程序中创建、读取、修改以及转换这些文件,提供了丰富的API...

    docx4j-3.3.7.jar fmath-mathml-java.jar jdom-2.0.6.jar

    标题和描述中提到的三个Java库文件——"docx4j-3.3.7.jar", "fmath-mathml-java.jar", 和 "jdom-2.0.6.jar",都是在Java开发环境中用于处理特定任务的重要组件。以下是关于这些库的详细解释: 1. **docx4j-3.3.7....

    DOC4J操作word文档

    DOC4J是一个强大的Java库,专门用于操作Microsoft Word(.docx)文档。它提供了丰富的API,使得在Java环境中创建、读取、更新和转换Word文档变得轻而易举。在"wordDeal"这个主类中,我们看到作者已经利用DOC4J实现了...

    docx4j是docxpptxxlsx的开源(ASLv2)库,在概念上类似于.zip

    2. **学习曲线**:由于docx4j涉及到大量XML操作,初学者可能需要花费一些时间来熟悉相关的API和XML结构,但一旦掌握,将极大提升文档处理的效率。 3. **性能优化**:在处理大量文档时,合理使用内存管理和多线程...

    word模板替换,插入图片

    本项目聚焦于“word模板替换,插入图片”,涉及到的技术包括jacob、rtf模板文件处理、docx4j、itext以及条码生成。下面将详细解释这些知识点。 1. **jacob**: jacob是Java和COM接口的一个桥梁,它允许Java程序...

    java将html文件生成word文件

    在IT行业中,转换文件格式是一项常见的任务,尤其是在处理文档时。本示例主要涉及的是将HTML文件转换为Word文档,...通过学习和掌握如何使用docx4j,我们可以方便地完成HTML到Word的转换,以及其他类似的文档转换任务。

    docx4j-charts-api:以编程方式创建与 MS Office 兼容的图表

    这个压缩包可能包含了项目源代码、示例程序、文档和测试用例,这些都是学习和调试docx4j-charts-api的好资源。 总之,docx4j-charts-api为Java开发者提供了一个强大的工具,使他们能够在不依赖于MS Office的情况下...

Global site tag (gtag.js) - Google Analytics