[Word] ??

2014-04-01 13:55:00by ???

word导出

Aurora中的word导出采用开源的组件docx4j来实现

配置环境

(1)更新到最新的aurora.jar和aurora-plugin.jar

(2)更新docx4j相关的jar包

(3)修改uncertain.xml 增加一行

<package-path classPath="aurora_plugin_package/aurora.plugin.export.word"/>
		

(4)WEB-INF下面新增一个目录aurora.plugin.export.word,创建配置文件word-provider.config

<?xml version="1.0" ?>
<WordTemplateProvider xmlns="aurora.plugin.export.word" defaultEncoding="UTF-8" />
		

目录aurora.plugin.export.word是存放以后导出word的模板,以及内嵌的图片

word模板

模板的结构的大致如下

<!--
       watermark: 水印
       debugger:是否打印调试信息
       readOnly:是否只读
       pageSize:纸张大小(默认A4)
       header: 页眉顶端距离(默认1.5)
       footer: 页脚低端距离(默认1.75)
       top: 上边距(2.54cm)
       bottom: 下边距(2.54cm)
       left: 左边距(3.17cm)
       right: 右边距(3.17cm)
-->
<doc watermark="水印">
    <!--页眉-->
    <header>
        <p align="right">
            <t>项目编号:PRJ0012001</t>
        </p>
    </header/>
    <!--页脚-->
    <footer/>
    <body>
        <toc/><!--生成目录-->
        <!--
            indLeft:左缩进(单位厘米)
            indFirstLine:  首行缩进(单位厘米)
            align:  布局方式
            numId:层级ID  从1开始
            ilvl:层次级别
            line:行高(默认400)
            orientation: 是否横向(portrait,landscape)
            toc: 是否生成目录
		-->
        <p indLeft="0" indFirstLine="100" toc="true" align="center" ilvl="0">
            <!--
                    bold: 粗体(默认false)
                    fontFamily: 字体格式(默认宋体)
                    fontSize: 字体大小(默认24即'小四')
                    fontColor:字体颜色(默认 000000)
                    underline: 下划线
                    italic: 斜体(默认false)
                     space: 是否保留格式(preserve)
                -->
            <t bold="true" font="宋体" fontSize="36" fontColor="ff0000" underline="single">粗体</t>
            <t bold="true" font="宋体" fontSize="36" fontColor="ff0000" underline="single" italic="true">其他格式</t>
            <!--
                       src:路径地址
                       type:路径方式(默认相对地址:relative,绝对路径:absolute)
                   -->
            <img src="xxx.png"/>
        </p>
        <p/>

        <!--默认是分页-->
        <br/> 


        <!--
            indLeft:左缩进(单位厘米)
            bolder:  边框(默认true)
            width: 宽度(单位厘米)

-->
        <tbl indLeft="1" border="false">
            <!--
                    height: 行高(单位厘米,默认0.67)
                -->
            <tr>
                <!--
                        width:列宽(单位厘米)
                        span:夸列数
                        fill: 填充颜色
                        vMerge: 上下合并(restart,continue)
                        vAlign: 垂直布局(默认center)
                    -->
                <tc width="1.44">
                    <!--
                            type:类型(top,bottom,left,right)
                            color:颜色 默认黑色
                            style: 边框style,默认single
                        -->
                    <border type="bottom" color="000000" style="single"/>
                    <p  align="left">
                        <t>序号</t>
                    </p>
                </tc>
                <tc width="3.95">
                    <p align="left">
                        <t>项目</t>
                    </p>
                </tc>
                <tc width="9.06">
                    <p align="left">
                        <t></t>
                    </p>
                </tc>
            </tr>
            <tr>
                <tc width="1.44">
                    <p  align="center">
                        <t>1</t>
                    </p>
                </tc>
                <tc width="3.95">
                    <p align="left">
                        <t>出租人</t>
                    </p>
                </tc>
                <tc width="9.06">
                    <p align="left">
                        <t></t>
                    </p>
                </tc>
            </tr>
        </tbl>
    </body>
</doc>
		

目录aurora.plugin.export.word是存放以后导出word的模板,以及内嵌的图片

P标签

p代表一个文字段落,可以内嵌多个t标签,主要用来文字布局

表 1. 

属性名 用途
indLeft 左缩进(单位厘米)
indFirstLine: 首行缩进(单位厘米)
align 布局方式
numId 层级ID 从1开始
ilvl 层次级别
line 行高(默认400)
orientation 是否横向(portrait,landscape)
toc 是否生成目录

T标签

T标签是文字的主要载体,可以定义颜色,字体类型,格式等属性

表 2. 

属性名 用途
bold 粗体(默认false)
fontFamily 字体格式(默认宋体)
fontSize 字体大小(默认24即'小四')
fontColor 字体颜色(默认 000000)
underline 下划线
italic 斜体(默认false)
space 是否保留格式(preserve)

导出screen

word-export标签定义了采用哪个模板,以及导出文件的名字。

<a:init-procedure>
        <a:model-query model="demo.word_company" rootPath="company"/>
		....
        <w:word-export template="aurora.plugin.export.word/word3.xml" name="word3.docx">
            <w:replaces>
                <w:replace name="company" path="/model/company/record/@company"/> <!--对应某个字段  ${company}-->
                <w:replace name="proj_code" path="/model/company/record/@proj_code"/>
                <w:replace name="sdt" path="/model/company/record/@sdt"/>
                <w:replace name="pro" path="/model/company/record"/> <!--对应某个对象 ${pro.pm}-->
            </w:replaces>
        </w:word-export>
</a:init-procedure>
		

replaces定义了模板中需要用到的变量名,具体取值是通过path属性来获取上面model-query中查询出来的数据

具体到模板中:

<doc>
<body>
    <p align="center">
        <t bold="true" fontSize="20" >公司:${company}</t>
    </p>
    <p align="center">
        <t bold="true" fontSize="20">项目编号:${proj_code}</t>
    </p>
    <p/>
    <p align="center">
        <t bold="true" fontSize="20">日期:${sdt}</t>
    </p>
    <p align="center">
        <t bold="true" fontSize="20">项目经理:${pro.pm}</t>
    </p>
</body>
</doc>
		
目录结构说明

很多情况下我们需要定义多个层次的目录结构,这个是通过p标签上的属性来实现的.


<p numId="1" ilvl="0" toc="true">
   <t bold="true">定义和解释</t>
</p>
<p numId="1" ilvl="1">
	<t>本合同所引用术语的定义和解释如下,如合同中无特别约定或合同双方未另行书面约定,本合同中出现的如下术语均按本条作特定解释:</t>
</p>
<p numId="1" ilvl="2">
   <t>附表列明租赁物件明细、租金、租金支付日及其他适用于该附表列明租赁物件之租赁交易的特定条款。每一附表经由双方签署构成双方之间就该附表列明的租赁物件的一项租赁交易。</t>
</p>
<p numId="1" ilvl="3">
	<t>这份报告是由解放军智库——军事科学院国防政策研究中心组织不同领域专家学者撰写的,这是解放军智库第二次发布中英文版的战略评估报告。</t>
</p>
<p numId="1" ilvl="0" toc="true">
	<t bold="true">时间重要性</t>
</p>
<p numId="1" ilvl="1">
	<t>就本合同及其项下任何租赁交易而言,时间和严格按时履行对双方而言均极为重要。</t>
</p>

		

numId属性定义了一组目录结构的id,通常一组目录节点定义为同一个numId. ilvl属性定义了目录的层次,第一次是0,第二层是1,以此类推。相同层次的目录ilvl值相同

toc属性主要用来生成目录,如果当前节点需要生成目录就定义成true。 一般在模板中的前部定义目录的生成位置,插入<toc></toc>框架会自动替换成对应的目录

Demo
  1. word

Comments

1 Responses to the article
  1. [email protected] 留言于:2015年11月25日 14:02
    pageSize具体可以设置哪些值?<doc pageSize="A4"> <doc pageSize="16"> <doc pageSize="1"> <doc pageSize="4">这样的都不对
发表评论