用程序向excel表输入数据,超过一千多行就死机(50分)

  • 主题发起人 主题发起人 fa885
  • 开始时间 开始时间
这个问题我遇见过,用CVL做,在Win98下每次插到1336行时就死机,Winxp可以。
后来改用OLE问题解决。
 
你是不是将所有数据输出完之后才进行一次性提交啊?如果是这样,肯定是内存不够用造成的。操作系统对内存的管理方式不一样,在你的程序中,如果在行数到一定数量后(如500行)提交一次,及时释放内存,估计不会再有问题了
 
可以进行循环优化嘛
var
adoRs: _Recordset;
begin
adoRs := ADOQuery.Recordset;
while True do
begin
///////////////////////////////////////////////////////////////////////////
// 下面开始循环优化,如果你不嫌麻烦的话还可以多写几个

if adoRs.EOF then break;
……// 增加一条记录到 Excel 中
adoRs.MoveNext;

if adoRs.EOF then break;
……// 增加一条记录到 Excel 中
adoRs.MoveNext;

if adoRs.EOF then break;
……// 增加一条记录到 Excel 中
adoRs.MoveNext;

if adoRs.EOF then break;
……// 增加一条记录到 Excel 中
adoRs.MoveNext;

if adoRs.EOF then break;
……// 增加一条记录到 Excel 中
adoRs.MoveNext;

///////////////////////////////////////////////////////////////////////////
// 这样你原来要执行 1000 次的循环现在只要执行原来的 1/5 次了
// 这就是我的循环优化
end;
end;
 
后退
顶部