本研究是针对在研课题的需求和传统报表工具(面向程序员报表)的不足,给出了Delphi实现的一种所见即所得的、面向用户的高级图文报表打印实现技术。面向用户的报表是指用户在使用阶段能够根据自己的要求对报表进行调整、修改、新增和删除的报表。这种报表大大加强了报表实现的灵活性和与用户的交互性,更好地满足了用户的实时要求,有效地实现了代码的重用、提高了系统的可维护性。该技术在黄(石)黄(梅)高速公路机电设备管理系统中进行了实际的运用,验证了其正确性、可靠性以及灵活性。
本文通过研究微软Excel文件的内部数据结构和存储机制,进而获取Excel文件的内部细节,在此基础上开发对Excel文件进行访问的组件。OLE是Microsoft公司为解决Windows应用程序间的通信问题而提出的协议规范,VBA是新一代Windows应用软件的通用控制语言,是Microsoft公司专为Office软件开发的,它提供了面向对象的程序设计方法并且引入了事件驱动的机制用于组织程序。通过反复试验,探讨了利用Delphi对OLE的支持,解决Delphi、Excel与SQL Server之间的通讯,将Delphi强大的数据检索、处理功能和Excel优良的制作复杂报表功能结合起来,实现不同应用程序间的有机结合,从而实现了复杂报表的制作和报表查询功能的可能。
动态报表具体功能开发的实现实际上是通过运用OLE Automation技术使用户通过编程可以在一个应用程序中控制另一个应用程序(Excel)的对象,达到可以由用户自由对所生成的报表按照自己的需求灵活的组合,拆分等的目的。设计思路为:查询后得到一个新的记录集,再将记录集中的记录通过VBA中的Excel对象逐条写入到Excel中的工作薄,并进行显示、存盘操作,还可通过Excel直接打印。
在Delphi中控制Excel的方法是首先链接Excel表,针对某个Excel表进行操作;其次是控制WorkBook、Sheet,包括建立新的WorkBook、Sheet,打开、保存、关闭WorkBook、Sheet等工作。本文通过黄黄项目中的开发报表实例研究,对于规则报表和不规则报表的实现分别用代码进行了详述。