Z
zhbwyztl
Unregistered / Unconfirmed
GUEST, unregistred user!
最近写了一个段JavaScript代码,实现网页数据保存到EXCEL的功能。
有一个奇怪的现象。
下面是代码:
try {
var xls = new ActiveXObject ( "Excel.Application"
);
}
catch(e)
{
alert( "Open Excel Faile!"
return ;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlsheet.Select;
//填充数据
xlsheet.Cells(1,1).Select;
var fname = xls.Application.GetSaveAsFilename("*.xls", "Excel Spreadsheets (*.xls), *.xls"
if (fname!="" xlBook.SaveAs(fname);
xlBook.Close (savechanges=false);
xls.Quit();
上面的代码大家应该比较熟悉了,
问题就在最后一句话: xls.Quit();
数据保存完毕后,内存里多了一个EXCEL的进程,
如果不主动刷新页面,这个进程就一直在内存里呆着,不释放!!!
这时如果通过资源管理器打开刚刚保存的文件,系统会一直处于等待状态!
如果保存完数据,主动刷新一下页面,那个EXCEL进程就释放了,再打开保存的文件一切正常。
我想,问题可能出在JAVA虚拟机的内存回收上,代码执行完后,xls对象句柄没有马上释放,好像在等待什么!
请教高手,这个问题该怎么解决?
是代码本身有问题吗?
有一个奇怪的现象。
下面是代码:
try {
var xls = new ActiveXObject ( "Excel.Application"
);
}
catch(e)
{
alert( "Open Excel Faile!"
return ;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlsheet.Select;
//填充数据
xlsheet.Cells(1,1).Select;
var fname = xls.Application.GetSaveAsFilename("*.xls", "Excel Spreadsheets (*.xls), *.xls"
if (fname!="" xlBook.SaveAs(fname);
xlBook.Close (savechanges=false);
xls.Quit();
上面的代码大家应该比较熟悉了,
问题就在最后一句话: xls.Quit();
数据保存完毕后,内存里多了一个EXCEL的进程,
如果不主动刷新页面,这个进程就一直在内存里呆着,不释放!!!
这时如果通过资源管理器打开刚刚保存的文件,系统会一直处于等待状态!
如果保存完数据,主动刷新一下页面,那个EXCEL进程就释放了,再打开保存的文件一切正常。
我想,问题可能出在JAVA虚拟机的内存回收上,代码执行完后,xls对象句柄没有马上释放,好像在等待什么!
请教高手,这个问题该怎么解决?
是代码本身有问题吗?