代码之家  ›  专栏  ›  技术社区  ›  Chris Kloberdanz

寻找一些OOAD报告建议

  •  1
  • Chris Kloberdanz  · 技术社区  · 17 年前

    我需要以多种不同的文件格式创建任意数量的报告。我可以使用Smarty来模板输出的大多数格式。但是,输出到Excel和PDF会使事情变得复杂,需要使用FPDF或TCPDF和PHPExcel。

    输出格式:

    • 文本-Smarty
    • 文本(带PCL格式)-Smarty
    • CSV-智能
    • Excel-PHPExcel

    这些格式需要能够在内存中进行流式处理或写入文件以供以后使用。

    所有报告中唯一一致的是,它们需要数据,直到添加了PDF和Excel支持(模板)。目前我有一个报表类,它有一个名为getData()的抽象方法。每个子类(例如SpecificReport)获取它需要的数据并将其存储在类属性中,以便绑定到模板等。

    每个报告都需要以各种格式提供。

    Report类目前处理输出,但是添加对Excel和PDF的支持使得这变得不可能。不仅仅是像Smarty那样将数据绑定到模板。每个报表都需要特定的代码。我想我可以在每个报表子类中重载这些方法。

    有人遇到过类似的任务吗?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Ryan Michela    17 年前

    听起来你可以用 Two Step View pattern .

    基本上,您的报告将在两个过程中呈现。第一个过程针对模型执行报告逻辑,以生成一种proto report对象。first pass proto报告包含报告上的所有信息,根据报告的需要进行组织和分组。

    完成后,proto报告将被输入到一个模板中,该模板将它呈现为特定的格式(pdf、xls、csv等等)。第二步生成报告的字节,这些字节可以存储到文件中,也可以通过网络发送。