aeroo報表使用指南

一:簡介

    

在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中展示的文字。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章