generate

generate(self)

使用范围: client

编程语言: python

父类: Report 类

描述说明

该方法用于在内部生成报表的内容。

在服务端得到来自客户端生成报表的请求时,首先创建报表的副本,然后副本再调用该方法。

该方法触发 on_before_generate 事件。

如果定义了报表 template ,解析模板并触发 on_parsedon_generate 事件。

on_generate 事件处理程序里,开发人员应该编写代码来生成报表的内容,并将报表的内容保存在一个 ods 文件里,同时使用 print_band 方法来打印数据区域。

当报表已生成且在客户端设置的报表的 extension 属性的值不等于 ods 时,服务端尝试转换那个 ods 文件。

为了转换文件,首先检查报表组(该报表的拥有者)是否有 on_convert_report 事件处理程序。 如果定义了该处理程序,将使用它来转换报表。 否则,使用在服务端安装的 LibreOffice无头(headless) 模式进行转换。

转换之后,应用程序将生成的报表保存到一个文件中,其位置在 “static” 目录的一个报表文件夹中,将 report_filename 的值设置为已保存的文件的文件名,生成 report_url 属性的值,并触发 on_after_generate 事件。

报表生成后,就会将它保存在 static 目录下的 reportreports 文件夹中,然后服务端将报表文件的 url 发送到客户端。

如果没有设置 template 属性,服务端会触发 on_generate 事件,然后触发 on_after_generate 事件。在这种情况下,你应该自己编写代码把已生成的内容保存到一个文件里,并设置 report_url 属性的值。。

另请参见

报表编程

服务器端编程