在ASP中访问Excel引发的问题
ASP程序在部署在Interpub目录下,目录结构大概如下——
############################################
Interpub
---------ABC(我们的ASP目录)
----------*.asp/*.htm/*.asa
----------doc
----------docbase
----------(其它子目录)
#############################################
ASP程序调用一个叫ABC.dll的动态链接库,执行以下操作——
(1) 首先,把一个Excel文件从docbase目录复制到doc目录下;
(2) 然后,调用xlsOpenBook函数打开Excel文件。
(3) 向Excel写入数据。
执行到第二步的时候,xlsOpenBook函数失败,错误描述是“无法打开文件”。
我搞不懂是什么原因导致了这个问题。
xlsOpenBook函数是动态链接库xlsCrt2.dll提供的API。这个组件名叫ExcelCreator,是一个日本公司开发的,可以在下面的网站下载到3.0 ActiveX版。我用的就是这个版本。
http://www.adv.co.jp/
这个组件大概是用C或者C++实现的,它能够操作Excel,却独立于MS Office——也就是说,机器上不需安装office,只安装ExcelCreator就能使用VB/C等语言实现Excel文件的生成和读写。
有几点需要注意——
(1)我在具有FAT32文件系统的win2000 professional下运行我的ASP程序。
运行结果:xlsOpenBook执行成功,一点问题也没有。
我的服务器是2000 Server,文件系统必须是NTFS。
(2)我们曾经在本地写VB程序,调用ABC.dll进行测试。
测试结果:xlsOpenBook执行成功,一点问题也没有。
(3)我们怀疑是授权问题,就在xls目录的“属性”-> “安全”页里向everyone用户授予full control权限。
测试结果:xlsOpenBook函数失败,错误描述是“无法打开文件”。
(4)在Interpub目录下,所有子目录的默认访问权限都是“Read + Run”,却没有“Write”权限。因此,我把doc目录迁移到C:\abctemp目录下,然后执行ASP程序。
运行结果:xlsOpenBook函数失败,错误描述是“无法打开文件”。
(5)我怀疑是DCOM授权问题,就运行dcomcnfg命令,向xlsCrt2.dll/ABC.dll授权,同时也向office Excel组件授权。(我使用vc带的ole/com viewer工具向向xlsCrt2.dll/ABC.dll授权)
测试结果:xlsOpenBook函数失败,错误描述是“无法打开文件”。
(6)这个ASP程序在Winnt Server 4.0下(文件系统是NTFS)的执行结果:xlsOpenBook执行成功,一点问题也没有。
我现在感到彷徨了:)这个问题有点怪。不知道哪位xdjm遇到过类似问题?