如何解决asp调用excel不稳定的问题?急啊!

walkingpoison 2002-07-22 11:03:18
我最近做的一个程序模块里面需要用到asp调用excel来生成excel文件,然后在客户端打开对应的excel文件。现在程序是都完成了,而且也能够正常出现excel的文件了。但是问题就是这个并不稳定,有的时候很快就能生成excel文件,但是有的时候就会出现创建excel对象失败的情况。而且只要失败一次,以后就怎么也出不来了。除非服务器重新启动。
这个生成excel的功能是程序中最重要的模块,可是现在却如此不稳定,请问各位高手有没有什么解决的办法?
...全文
59 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchxxzx 2002-07-23
  • 打赏
  • 举报
回复
我在想可能是你生成文件之后没有及时释放资源的原因,你打开服务器的“任务管理器”,同时运行该程序,观察程序结束之后,任务管理器中是否还有EXCEL。EXE的进程遗留在里面,如果是,那就是问题所在
walkingpoison 2002-07-23
  • 打赏
  • 举报
回复
有谁遇到过这种情况?帮个忙吧,谢谢!
walkingpoison 2002-07-23
  • 打赏
  • 举报
回复
hwstu(疯狂绅士)谢谢你的提示,请问你所说得生成图表的简单方法是什么?我现在的方法总是导致服务器出错。

我现在的思路是这样的:
先建立excel对象
Set xlsApp = server.CreateObject("Excel.Application")
Set xlsWorkBook = xlsApp.Workbooks.Add
Set xlsSheet = xlsWorkBook.Sheets(1)
然后可以进行一系列的操作,比如:
for k=1 to 10
xlsSheet.Cells(2+k, 10).Value = k
next
xlsSheet.Columns(1).ColumnWidth = 2
xlsSheet.Columns(2).ColumnWidth = 3
还有就是创建图表:
xlsSheet.ChartObjects.Add xlsSheet.Columns(2).Left, xlsSheet.Rows(8).Top, 603, 332
Set xlsChart = xlsSheet.ChartObjects(1).Chart
然后对图表对象进行操作,省略大部分程序
xlsChart.ChartType = 51 'xlColumnClustered
……

最后用文件对象删除目标文件,并保存当前文件
Set fsExcel=server.CreateObject("Scripting.FileSystemObject")
filename=server.MapPath(".") & "\MyExcelFile.xls"
if fsExcel.FileExists(filename) then
fsExcel.DeleteFile filename, true
end if
xlsSheet.SaveAs filename
xlsApp.quit
Response.Write "<script language=javascript>window.location.replace('MyExcelFile.xls')</script>"

如果出错就一定是在Set xlsApp = server.CreateObject("Excel.Application")这一行出错的。
walkingpoison 2002-07-23
  • 打赏
  • 举报
回复
我的程序下面加了xlsApp.quit这样的语句了。如果程序运行正常,Excel的进程就会释放。如果运行失败的话,就会有一个多余的Excel进程。不过最多只有一个,这个时候不论如何执行程序,都会失败。
还有一个现象,就是每次执行的时候,服务器就会跳出一个出错的对话框,我想这个应该就是Excel调用失败跳出来的框
hwstu 2002-07-23
  • 打赏
  • 举报
回复
我以前遇到过这个问题,要不你先把你的代码发到我的邮箱hwstu@sohu.com我看看。
生成excel的方法有很多,一个重要的因数是看看你的客户是否要用到宏。
如果只是数据可以用最简单的方法搞定,写到一个表格,然后把扩展名改为xls这个最节约资源:)
另外如果你要把图片(饼图等)等写到excel当中,有一些简单的方法,让程序写到用户自己的机器上,这个是一个思路。
如果是有宏什么的,必须要用excel格式有很多方法,关键还是独自前行说的要关掉excel的相关进程,注意excel不是数据库,所以你写的时候一定要很小心,我以前也为这个问题搞了个半死!!
walkingpoison 2002-07-23
  • 打赏
  • 举报
回复
不是这样的问题,我程序最后面都加上了xlsApp.quit语句的。
问题在于,有的时候第一次执行程序也会出现问题
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧