generate
- generate(self)
使用范围: client
编程语言: python
父类: Report 类
描述说明
该方法用于在内部生成报表的内容。
在服务端得到来自客户端生成报表的请求时,首先创建报表的副本,然后副本再调用该方法。
该方法触发 on_before_generate 事件。
如果定义了报表 template ,解析模板并触发 on_parsed 和 on_generate 事件。
在 on_generate 事件处理程序里,开发人员应该编写代码来生成报表的内容,并将报表的内容保存在一个 ods 文件里,同时使用 print_band 方法来打印数据区域。
当报表已生成且在客户端设置的报表的 extension 属性的值不等于 ods 时,服务端尝试转换那个 ods 文件。
为了转换文件,首先检查报表组(该报表的拥有者)是否有 on_convert_report 事件处理程序。 如果定义了该处理程序,将使用它来转换报表。 否则,使用在服务端安装的 LibreOffice 以 无头(headless) 模式进行转换。
转换之后,应用程序将生成的报表保存到一个文件中,其位置在 “static” 目录的一个报表文件夹中,将 report_filename 的值设置为已保存的文件的文件名,生成 report_url 属性的值,并触发 on_after_generate 事件。
报表生成后,就会将它保存在 static 目录下的 report 或 reports 文件夹中,然后服务端将报表文件的 url 发送到客户端。
如果没有设置 template 属性,服务端会触发 on_generate 事件,然后触发 on_after_generate 事件。在这种情况下,你应该自己编写代码把已生成的内容保存到一个文件里,并设置 report_url 属性的值。。