- 浏览: 62994 次
- 性别:
- 来自: 北京
最新评论
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.");
}
}
一个简单的例子:
由于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.");
}
}
发表评论
-
mysql 索引知识积累
2013-01-05 15:45 8731.MySQL能够在name的索引中查找“Mike”值,然后直 ... -
Struts2中的ModelDriven机制及其运用(转)
2012-12-31 17:34 756为什么需要ModelDriven 所谓ModelDriv ... -
WEB struts2 实现定时执行
2012-09-20 14:59 1124Spring中Quartz的配置 各种企业应用几乎都会碰到任务 ... -
myeclipse自动生成hibernate的Mapping和po文件
2012-09-06 15:17 769用过hibernate的人都知道,hibernate po的M ... -
struts2中减少action数量(通配符使用)
2012-08-22 17:02 800如struts中配有如下几个action,ManagerUse ... -
struts2拦截器的原理和写法(转)
2012-08-22 16:32 1040一、什么是拦截器? 提到拦截器,说得好听点,就是安全性检查,说 ... -
mysql命令
2012-06-29 09:35 8071.Mysql远程导出命令: mysqldump -h192. ... -
Hibernate 的原理与配置
2012-05-30 16:05 772也许你听说过Hibernate的大名,但可能一直不了解它,也许 ... -
华为的JAVA面试题及答案(部分)-收藏
2012-05-04 08:56 0华为的JAVA面试题 (后记:没有想到华为的面试题就是非同一般 ... -
JAVA中堆栈和内存分配原理(转)
2012-03-11 10:33 7601、栈、堆 1.寄存器:最快的存储区, 由编译器根据需求进行 ... -
java基础梳理
2012-03-11 09:22 9031.java中成员变量和局部变量的区别:成员变量如果程序员 ... -
用spring的beans配置mysql数据库
2012-03-06 15:07 7671今天很兴奋,因为我用spring的beans配置mysql ... -
final用法小感
2012-03-02 11:02 794final是java中的关键字,它虽然不常用,但是用处也很大。 ... -
解决svn 提交时报Cant open file /data/svn/develop/db/txn-current-lock: Permission deni
2011-09-23 16:21 2022今天在测试服务器上安装、配置subversion都非常顺利的, ... -
原来java中还有精度操作问题
2011-05-26 10:15 873看来自己知道的东西 ... -
有关try catch
2011-03-28 09:37 869try{……}里面是一些你觉得可能会出问题的代码,catch里 ...
相关推荐
docx4j 用的jar包,docx4j学习网址:http://www.docx4java.org/trac/docx4j
Docx4J是一个强大的开源Java库,它主要用于处理Word2007(.docx)、PowerPoint2007(.pptx)和Excel2007(.xlsx)文件,特别在处理Word文档方面,与Apache POI相比具有更强大的功能。Docx4J的官方入门指南是英文版本...
本文将深入探讨Docx4j在处理Word文档方面的应用,以及如何利用提供的资源进行学习。 首先,标题中的“Docx4j office word java”表明这是一个使用Java编程语言与Microsoft Word文档交互的工具。Docx4j不仅支持读取...
在IT行业中,尤其是在文档处理领域,`docx4j`是一个非常重要的库,它允许开发者通过编程方式操作Microsoft Office Open XML...对于需要自动化处理Word文档的开发工作,`docx4j`是一个强大的工具,值得深入学习和使用。
**docx4j项目概述** docx4j是一款强大的Java库,专为处理Microsoft Office 2007及更高版本的文件格式而设计,包括Word(.docx)、Excel...通过深入学习和实践,开发者可以充分利用docx4j解决各种复杂的文档操作需求。
在学习和使用docx4j时,以下是一些核心知识点和关键功能: 1. **文件格式理解**:首先,了解OOXML文件结构是必要的,它们是由一系列XML文档和资源文件组成的ZIP包。docx4j通过解析和操作这些内部XML来实现文件的...
《docx4j及其依赖的jar包:实现高效文档处理》 在信息技术领域,文档处理是日常工作中不可或缺的一部分。docx4j是一个强大的Java库,专门用于处理Microsoft Office Open XML (OOXML)格式的文件,如.docx和.xlsx。这...
《docx4j 替换文本》 在文档处理领域,docx4j是一个非常实用的Java库,它专门用于创建、修改和转换Open XML格式的文档,如.docx、.pptx...在实际工作中,结合源码学习和使用docx4j,将会对提升我们的IT技能大有裨益。
在IT行业中,动态生成文档是一项常见的任务,尤其在企业级应用和数据分析中。docx4j是一个强大的Java库,专门用于处理...通过学习和熟练使用docx4j,你可以提高工作效率,同时确保生成的文档具有高度的定制性和一致性。
documentation目录可能包含详细的用户手册和API文档,是学习和使用docx4j的重要参考资料;optional目录可能包含一些可选的依赖库,资源(resources)目录则可能存储了一些默认的模板或样式文件;legals文件可能包含...
docx4j 用的jar包,docx4j学习网址:http://www.docx4java.org/trac/docx4j
**docx4j** 是一个Java库,专门用于处理Microsoft Office Open XML (OOXML)格式,尤其是.docx、.pptx和.xlsx文件。这个库提供了丰富的API,...通过深入学习和实践,你可以利用docx4j实现复杂、自定义化的文档处理需求。
docx4j是一个强大的Java库,它允许开发者通过编程方式生成和修改Microsoft Office Open XML (OOXML) 格式的文档,包括.docx。这篇博客文章“使用docx4j编程创建复杂的.docx格式的word文档”提供了关于如何使用这个库...
《docx4j-3.3.7:深入解析与应用》 docx4j是一款强大的Java库,专用于处理Microsoft Office Open XML (OOXML)格式的文档,如.docx和.xlsx。它允许开发者在程序中创建、读取、修改以及转换这些文件,提供了丰富的API...
标题和描述中提到的三个Java库文件——"docx4j-3.3.7.jar", "fmath-mathml-java.jar", 和 "jdom-2.0.6.jar",都是在Java开发环境中用于处理特定任务的重要组件。以下是关于这些库的详细解释: 1. **docx4j-3.3.7....
DOC4J是一个强大的Java库,专门用于操作Microsoft Word(.docx)文档。它提供了丰富的API,使得在Java环境中创建、读取、更新和转换Word文档变得轻而易举。在"wordDeal"这个主类中,我们看到作者已经利用DOC4J实现了...
2. **学习曲线**:由于docx4j涉及到大量XML操作,初学者可能需要花费一些时间来熟悉相关的API和XML结构,但一旦掌握,将极大提升文档处理的效率。 3. **性能优化**:在处理大量文档时,合理使用内存管理和多线程...
本项目聚焦于“word模板替换,插入图片”,涉及到的技术包括jacob、rtf模板文件处理、docx4j、itext以及条码生成。下面将详细解释这些知识点。 1. **jacob**: jacob是Java和COM接口的一个桥梁,它允许Java程序...
在IT行业中,转换文件格式是一项常见的任务,尤其是在处理文档时。本示例主要涉及的是将HTML文件转换为Word文档,...通过学习和掌握如何使用docx4j,我们可以方便地完成HTML到Word的转换,以及其他类似的文档转换任务。
这个压缩包可能包含了项目源代码、示例程序、文档和测试用例,这些都是学习和调试docx4j-charts-api的好资源。 总之,docx4j-charts-api为Java开发者提供了一个强大的工具,使他们能够在不依赖于MS Office的情况下...