Delphi 生成网页(html)报表
来源:互联网 发布:禁止局域网安装软件 编辑:程序博客网 时间:2024/04/28 22:00
在整理硬盘的时候,突然发现了这个小东西,回想起来是好多年前给 永恩集团 (达芙妮) 做连锁POS系统的时候做的一个用DELPHI 生成HTML报表的测试(我已经5年没用DELPHI 了)。为什么要求这么变态?
我当初给达芙妮用 fastreport 做了一个报表,格式和数据展示完全满足要求,但最终被拒绝了,其原因是,他们原来有一套oracle erp 的打印就是用HTML 网页形式打印的。我很崩溃,我记得oracle 里面的 report builder 也很强的,为什么不用?其实到现在我仍然坚持用fastreport 做是对的,但当时,人家是客户,非得用html 的,你也没办法,人家就喜欢在浏览器里点右键打印,哎,这年头,什么样的需求都有。
当时这个团队没有去坐调研,我只好抽晚上空余时间,看了下资料,解决了这个问题,其实很简单,纯体力活。
delphi 里面有 webbrowser 控件,在这个上面直接输出html 代码就可以了。你可以先用html做好一个模板,然后往里面填写数据即可。
这个报表很复杂的,涉及到分组,汇总聚合。分类汇总,明细等在一个报表上。 也就是一个结构复杂的html 页面。 结构的复杂,说白了是体力活,其关键点:
生成html模板
举个很简单的例子,头部:
从数据库中查询数据,得到结果,并填充
这样我们就生成了一小段 html 代码,如何显示在webbrowser上呢?
另外要注意
我当初给达芙妮用 fastreport 做了一个报表,格式和数据展示完全满足要求,但最终被拒绝了,其原因是,他们原来有一套oracle erp 的打印就是用HTML 网页形式打印的。我很崩溃,我记得oracle 里面的 report builder 也很强的,为什么不用?其实到现在我仍然坚持用fastreport 做是对的,但当时,人家是客户,非得用html 的,你也没办法,人家就喜欢在浏览器里点右键打印,哎,这年头,什么样的需求都有。
当时这个团队没有去坐调研,我只好抽晚上空余时间,看了下资料,解决了这个问题,其实很简单,纯体力活。
delphi 里面有 webbrowser 控件,在这个上面直接输出html 代码就可以了。你可以先用html做好一个模板,然后往里面填写数据即可。
这个报表很复杂的,涉及到分组,汇总聚合。分类汇总,明细等在一个报表上。 也就是一个结构复杂的html 页面。 结构的复杂,说白了是体力活,其关键点:
生成html模板
举个很简单的例子,头部:
{报表头部分一,6个参数} HTML_LZS_HEAD_ONE= '<TABLE cellSpacing=0 border=0> ' +'<TBODY> ' +'<TR> ' +'<TD align=right>分公司:</TD> ' +'<TD align=left>%s</TD></TR> ' +'<TR> ' +'<TD align=right>经营小组:</TD> ' +'<TD align=left>%s</TD></TR> ' +'<TR> ' +'<TD align=right>门店:</TD> ' +'<TD align=left>%s</TD></TR>' +'<TR>' +'<TD align=right>年:</TD> ' +'<TD align=left>%s</TD></TR> ' +'<TR> ' +'<TD align=right>月:</TD> ' +'<TD align=left>%s</TD></TR> ' +'<TR> ' +'<TD align=right>单据状态:</TD> ' +'<TD align=left>%s</TD></TR> ' +'</TBODY> ' +'</TABLE> ';
从数据库中查询数据,得到结果,并填充
F_HEAD_ONE:=Format(HTML_LZS_HEAD_ONE, [aqryPublic.FieldByName('SUBCOMPANY_ID').AsString, aqryPublic.FieldByName('WORKING_GROUP').AsString, aqryPublic.FieldByName('SHOP_ID').AsString, aqryPublic.FieldByName('REFERENCE_YEAR').AsString, aqryPublic.FieldByName('REFERENCE_MONTH').AsString,Fstate]);
这样我们就生成了一小段 html 代码,如何显示在webbrowser上呢?
procedure TFrmReport.ShowHtml(content: widestring);var v: Variant; HTMLDocument: IHTMLDocument2;begin v := VarArrayCreate([0, 0], varVariant); v[0] := content; HTMLDocument := WebBrowser1.Document as IHTMLDocument2; HTMLDocument.write(PSafeArray(TVarData(v).VArray)); HTMLDocument.close; HTMLDocument := nil;end;
另外要注意
initialization OleInitialize(nil);finalization OleUninitialize;
- Delphi 生成网页(html)报表
- powerDesigner生成HTML报表
- C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表 开放源码及调试
- 使用SQLPLUS生成HTML报表
- 使用SQLPLUS生成HTML报表
- 使用SQLPLUS生成HTML报表
- Delphi程序执行时实时生成报表
- 在Delphi中动态生成QuickReport报表
- Delphi控制Excel自动生成报表
- Delphi控制Excel自动生成报表
- 在Delphi中动态生成QuickReport报表
- Delphi控制Excel自动生成报表
- 关于HTML网页生成网站
- Java生成html静态网页
- delphi中EmbeddedWB网页html相互调用
- 动态编译jrxml文件生成html报表
- python 生成html测试报表三步曲
- android 自动生成html报表图片
- [Sql Server 2008 基础] With Ties. Over()子句(转载)
- oracle简单学习总结(七)——表的锁定
- 编译OK6410 ANDROID系统遇到的两个问题
- 阿里巴巴
- 微软Office 2013:会受企业待见的最佳新功能
- Delphi 生成网页(html)报表
- Tomcat功能的配置方法
- Chrome 无法安装的解决办法
- 微软Office 2013新功能深度揭秘
- 2-36进制转换 C语言
- Selenium是否支持HTML5?
- ASP.NET 2.0 个性化用户配置
- STL中Algorithm
- 5个数求最值