java docx4j 使用教程_使用java语言用docx4j包操作office2007的ooxml文档示例

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();//

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();//

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();//

cols.setNum(BigInteger.valueOf(2));

cols.setSpace(BigInteger.valueOf(425));

sp.setCols(cols);

org.docx4j.wml.CTDocGrid grd=factory.createCTDocGrid();//

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 = "

Bold, just at w:r level

";

wordMLPackage.getMainDocumentPart().addObject(org.docx4j.XmlUtils.unmarshalString(str));

//自定义标签转化的时候,必须加xmlns:w=/"http://schemas.openxmlformats.org/wordprocessingml/2006/main/"语句

String str1 = "";

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.");

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值