aeroo报表使用指南

来源:互联网 发布:凯立德优化内存 编辑:程序博客网 时间:2024/06/05 18:42
一:简介

    

在OpenERP的使用过程中,我们时刻都需要运用报表进行相关数据的打印。OE系统默认的是SXW/RML式的报表模式,它只能默认打印pdf的报表。这对于一些想在后期修改报表的客户来说是很不方便的。所以我们希望报表引擎可以打印诸如excel,word等的多种格式报表。经过调查,我们采用aeroo的报表引擎。主要有如下的原因:

第一,报表设计简单,可视化操作,可进行现场快速修改

第二,支持多种打印格式,同时支持界面导入,不需要硬编码

但是,aeroo也有缺点,就是必须有openoffice或者libreoffice作为服务运行。如果没有他们的话,aeroo就找不到所需的uno运行环境了。不过总的来说,aeroo的优点还是大于缺点的。下面我们就来看一下如何在OE中运用aeroo报表。

 

二:安装OpenOffice

上面说了aeroo的运行需要openoffice环境,所以第一步就是安装openoffice。值得注意的是,我们安装过后需要把它作为服务,并且给它开启8100端口。否则aeroo在安装的时候是找不到openoffice环境的。具体的步骤如下:

1,在百度搜索openoffice,第二项就是openoffice的下载。也可以去官网http://www.openoffice.org/上下载。

2,解压下载的压缩包,点击setup.py一路下一步,安装即可完成。

3,到microsoft官网上下载Windows Server 2003 Resource Kit Tools,直接在百度中搜索进入也可。默认装在C:\Program Files\Windows Resource Kits文件夹中。我们主要用它来制作windows服务。

4,进入命令行,运行以下指令:"C:\Program Files\Windows Resource Kits\Tools\instsrv.exe" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\srvany.exe",注意从引号开始到引号结束(包含引号)全部拷贝进命令行。

5,打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Openoff

iceUnoServer,在其下新建Parameters项,在Parameters下新建两个字符串值,分别如下:

Application (:C:\Program Files\OpenOffice 4\program\soffice.exe)

AppParameters(-invisible -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard)也可以建一个soofice.reg的文件将以下内容拷贝进去直接点击即可:

    Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\OpenOfficeUnoServer\Parameters]

"Application"="C:\\Program Files\\OpenOffice 4\\program\\soffice.exe"

"AppParameters"="-invisible -headless -accept=socket,host=127.0.0.1,port=8100;

urp; -nofirststartwizard"

6,打开控制面板\管理工具\服务,找到名为OpenOfficeUnoServer 的服务,设置属性启动类型为自动并启动服务

7,在cmd下用以下命令查看8100端口是否被监听,netstat -anp tcp

8,在python的安装目录下D:\software\python\Lib\site-packages新建uno.pth文件,在其中输入C:\\Program Files\\OpenOffice 4\\program即aeroo运行时所需要的openoffice环境

 

三,安装aeroo所需模块

1,在安装之前,我们首先需要调查这个库它依赖哪些模块。这些内容都在aeroolib的安装文件setup.py之中。从其中我们看到

 install_requires=[

 "Genshi >= 0.5",

 "lxml >= 2.0"

  ],

搜索他们分别安装,在安装genshi的时候,安装0.6的版本,0.7的似乎报错。另外,在安装aeroolib的时候,会自动下载geshi的egg信息。我们可以进入python的site-packages中查看。虽然有了egg信息,但是并没有安装。所以是需要你手动去下载,然后安装的。

2,安装aeroolib模块,下载aeroolib模块进行安装

3,Aeroo的运行需要report_aeroo,report_aeroo_ooo两个模块,他们可以在http://www.alistek.com/en/component/content/article/110-aeroo-reports-for-openerp-v70x.html官网上下载,也可以在OE官网的应用里下载。下载下来以后需要修改report_aeroo的ExtraFunctions.py文件第165行为return val.name_get()[0][1]

四,定义报表导出格式

Aeroo所支持的导出类型都在report_aeroo_ooo的data文件夹下的xml里定义出来了,我们只需要根据它的格式定义即可。

下面我们以一个xml为例,看看如何定义不同类型的报表。看一下xml里面的定义:

<record model=ir.actions.report.xml id=my_first_aeroo>

    <!--定义报表的类型,默认即可-->

<field name=report_type>aeroo</field> 

<!--定义输出的样式,有oo-ods和oo-odt两种-->

<field name=in_format>oo-ods</field>

<!--输出格式,即是我们可到的生成的文件的后缀名-->

<field name=out_format eval=ref(report_aeroo_ooo.report_mime

Types_pdf_odt)/>

<field name=name>First Aeroo</field>

<!--定义模板文件,有ods和odt两种-->

<field name=report_rml>firstaeroo/data/template.ods</field>

<field name=report_name>First.Aeroo</field>

        <field name='model'>ir.ui.view</field>

        <field name='type'>ir.actions.report.xml</field>

        <!--定义渲染器路径-->

<field name=parser_loc>firstaeroo/parser.py</field>

        <field name='tml_source'>file</field>

        <field name='parser_state'>loc</field>

</record>

以上的xml我们要注意的就是in_format和out_format,比如说我们想让输出的文件为xls格式的,那么我们可以查看report_aeroo_ooo的data文件夹下的xml里对xls格式的声明可知。我们在in_format那里写oo-ods,在out_format那里写report_aeroo_ooo.report_mime_types_xls_odt,意思是report_aeroo_ooo模块下id为report_mime_types_xls_odt的格式类型。然后在report_rml里定义ods模板路径即可。

 

五,aeroo语法介绍

    Aeroo的方便之处就是可以直接在openoffice中进行报表开发,这就需要了解aeroo在openoffice中的语法。

1,openoffice writer

在openoffice writer之中我们获取OE中的内容都是在<>中获取的,我们以hr.employee为例。可以通过如下方式获取hr.employee的信息。

(1)在odt文件中插入如下表格,将光标放在第一行的第二列


2)点击“插入——字段——其他”弹出如下的对话框


3)在提示中输入如下的内容<o.name>,点击插入,弹出如下内容,起一个别名Name

 

(4)确定后Name就填进单元格中了

     

5)如果hr.employee对象中有和别的对象进行one2many关联的。这个时候就需要进行for循环了。比如hr.employee和证书certificateone2many关联。则可以如下定义

<for each=r in o.certificate>  //可以起一个别名,比如loop start

</for>   //起一个别名,比如loop end

for循环中间插入一些需要的字段就可以了,比如插入证书名用<r.cer_name>

 

2,openoffice calc

 

Calc和writer的语法稍微有不同的就是他不是放在<>中定义,而是放在python://后面定义,比如上面的<o.name>就可以这样写python://o.name。

还有一点需要注意,在calc中没有字段给你插入,我们用的是超链接,也就是在你的calc单元格中插入一个超链接。点击“插入——超链接”弹出如下框

 

 如上所示,目标是python语句,提示文字是calc中展示的文字。

0 0
原创粉丝点击