如何提高Excel报表生成性能(关于Range.Copy),高分求助!(200分)

  • 主题发起人 主题发起人 younghat
  • 开始时间 开始时间
Y

younghat

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟我做了一个基于Excel的柔性报表解决方案,在实用过程中发现性能上存在问题(A3幅面的报表平均1秒种才生成一页),经调试分析发现性能瓶颈在于Excel的Rang.Copy函数。
......
while not qry.Eof do
begin
ExcelFile.WorkSheets[1].Range[SrcRange].Copy(ExcelFile.WorkSheets[2].Cells[p.r,p.c]);
//注:上面一行代码实际上占用了90%的执行时间,为性能瓶颈。
for b:=0 to length(BandCells)-1 do
begin
......
//写数据库内容到Cells中,此处花费的时间仅为10%。
end;

不知有什么办法能够改善Range.Copy的性能,
或者有什么变通的办法,从而绕开Range.Copy函数。
请各位不吝赐教,重金酬谢!
 
把你的程序发过来我看看,
我这段时间正在搞这些,
做一些比较复杂的,Fast Report实现不了的报表
 
可以借用
excel 的 模板+外部数据 方法。
可直接使用 SQL 语法。
很快的。 7500条记录Access库 我就 6秒。
C3 + 255M
 
[blue]“模板+外部数据”的报表方案在一开始就被讨论并否决了,原因是这一方案柔性有限,无法实现复杂报表格式的自定义。
还有没有其他办法,请各位指教,小弟我在线等待。[/blue]
 
[brown]具说用VB来写控制Excel的程序会比Delphi程序在性能上快4到5倍,不知道有没有这回事?
哪位有用VB做Excel报表的经验,请帮我确认一下。
[/brown]
要是果真如此,也总算是有条出路。
 
???
》“模板+外部数据”的报表方案在一开始就被讨论并否决了,
》原因是这一方案柔性有限,无法实现复杂报表格式的自定义。

柔性有限??
你的软件要怎么柔性。
1、天天改吗,天天设计不同的表格。
2、数据表不是规则的表格。
3、还是别的要求。

我现在就是用这个方法。
 
[[purple]向红林,
你说对了,我的软件就是要有“天天改”的能力。
我们的数据库方案、用户界面、业务流程都要求柔性,报表当然更要是柔性的。
比如说,用户可以随时在业务数据基础上自行定义出一个内容和格式都全新的一张报表模
板,而不需要程序员改一行程序。
相信“模板+外部数据”也能实现很复杂多样的报表,但它和我们现在的方案是完全两条不
同的技术路线,现在要改几乎是不可能的了。
不管怎样,谢谢你的热心建议。[/purple]
 
younghat,
“A3幅面的报表平均1秒种才生成一页”
你不觉得这个速度已经很快了吗?
你可以在界面上显示出报表生成的进度条,这样用户就不会觉得慢了。
 
接受答案了.
 
后退
顶部