您的位置:首页 > 产品设计 > UI/UE

利用DataDynamics.SpreadBuilder生成Excel文档

2011-09-19 22:42 387 查看
ActiveReport(以下简称AR)有自带的XlsExport组件,利用该组件,可以把AR的Document导出到Excel文件中。

但是导出的格式令人非常不满意,主要存在以下问题:

1.若字段本身是string类型,内容为纯数字(如“01234”),且设计报表控时,对齐方式设定为左对齐,内容导出到excel后,单元格的内容居然会靠右对齐。

2.若内容有段落回车符时,导出后,只能保留第一段的内容,后面的段落会被删除掉。

3.若Detail部份,分两行混合排版时,如以下所示,第二行的控件导出后,会消息。



后来发现,AR的组件XlsExport.dll,还有DataDynamics.SpreadBuilder(以下简称SPB),利用它,可以手工生成Excel文件。

简要实现过程:

1.实例化SPB.WorkBook,SPB.WorkBook.AddNew()。

2.在AR.LoadLayout(sFileName)之后,根据AR实例装有的控件,算出AR所有控件的横座标列表,设置工作表的列宽。

3.记录只要首页显示的节点,根据其纵座标列表,得出需要只的行数。(因为像ReportHeader,GroupHeader(若没有设置DataField)等,并不是按顺序经过AfterPrint的。)

3.把AR的每个Section挂上AfterPrint事件,执行AR.Run()。

4.在Section的AfterPrint事件,算出其所有控件的纵座标列表,设置工作表对应的行高。 接着按每个控件的内容与格式,设置工作表对应的单元格。

针对目前的格式,输出效果还算令客户满意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: