利用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事件,算出其所有控件的纵座标列表,设置工作表对应的行高。 接着按每个控件的内容与格式,设置工作表对应的单元格。
针对目前的格式,输出效果还算令客户满意。
但是导出的格式令人非常不满意,主要存在以下问题:
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事件,算出其所有控件的纵座标列表,设置工作表对应的行高。 接着按每个控件的内容与格式,设置工作表对应的单元格。
针对目前的格式,输出效果还算令客户满意。
相关文章推荐
- 利用JExcelApi来动态生成excel文档
- android UiAutomator利用快速调试生成excel文档测试报告
- java后台利用Apache poi 生成excel文档提供前台下载示例
- 利用JExcelApi来动态生成excel文档
- 导出mysql数据,利用pandas生成excel文档,并发送邮件
- [置顶] java后台利用Apache poi 生成excel文档提供前台下载
- 利用XSL将DataSet数据转换为Excel文档
- 生成Excel文档(用户选择存放)
- PHPExcel:用于Excel等文档生成的PHP开源类库
- 利用Data URL(data:image/jpg;base64,)将小图片生成数据流形式
- 利用ViewData生成JavaScript数组
- [置顶] java后台利用模板生成Word文档提供前台下载
- 利用doxygen生成说明文档(支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#)
- JSP生成WORD文档,EXCEL文档及PDF文档的方法
- 生成excel文档
- Java中用Apache POI生成excel和word文档
- 利用 Gitbook 生成文档中心站点
- VC中调用EXECL模板生成新的Excel文档
- 利用owc生成excel并且显示在页面
- 利用eoLinker-AMS一键快速生成接口文档