尝试使用IIS从Perl打开excel文件时出错

尝试使用IIS从Perl打开excel文件时出错,excel,perl,iis,win32ole,Excel,Perl,Iis,Win32ole,我正在使用IIS从c#应用程序运行一个perl脚本文件,因为我想打开一个已经存在的Excel文件,我正在使用以下行打开它: $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start Excel";//upto this working fine $book = $ex->Workbooks->Open($fileName); //this line

我正在使用IIS从c#应用程序运行一个perl脚本文件,因为我想打开一个已经存在的Excel文件,我正在使用以下行打开它:

$ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) 
or die "Oops, cannot start Excel";//upto this working fine

$book = $ex->Workbooks->Open($fileName); //this line only giving error
现在我得到的错误如下:

“Microsoft Office Excel”中的OLE异常:

Microsoft Office Excel无法访问该文件 “C:\GWATS\Report\Nov-17-2014\u 10-06-36\GES-11n\u IOT\u 10-06-37.xls”。有 几个可能的原因:

•文件名或路径不存在

•另一个程序正在使用该文件

•您试图保存的工作簿与当前打开的工作簿同名 工作簿

Win32::OLE(0.1711)错误0x800a03ec 在C:\GWATS\Lib\System\Report.pm第611行的方法/PROPERTYGET“Open”中

文件确实存在,我核实过了


另外,当我直接在cmd中运行该脚本时,该脚本工作正常。这里的问题是什么,我认为问题出在IIS上,但我可以找到问题的确切原因?

尝试下面的perl脚本。如果仍然存在一些错误,请告诉我:

代码:

   use Win32::OLE qw(in with);
   use Win32::OLE::Const 'Microsoft Excel'; 

   my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
     || Win32::OLE->new('Excel.Application', 'Quit');
    my $filename = 'C:\GWATS\Report\Nov-17-2014_10-06-36\GES-11n_IOT_10-06-37.xls'
    my $book  = $Excel->Workbooks->Open($filename);
打开Windows资源管理器

根据您安装的office是32位版本还是64位版本,您需要执行以下一项(或两项)操作:

32位Office安装:导航到C:\Windows\System32\config\systemprofile

64位Office安装:导航到C:\Windows\SysWOW64\config\systemprofile

验证文件夹“Desktop”是否存在(如果不存在则创建)

右键单击>属性


在“安全”选项卡上:使用默认权限(读取和执行;列出文件夹内容;读取)添加网站运行时使用的帐户(例如:DefaultAppPool)

我遇到了类似的问题


当我为文件提供绝对路径时,它对我起了作用

我能知道错误吗?它是相同的还是不同的?IIS用来运行脚本的用户帐户是否有权访问该文件?是的,Tim我向用户添加了DefaultAppPool,并授予报告文件夹的完全控制权。如果您使用该路径从perl运行“文件存在”检查,是否成功?从cmd提示符运行时,它运行正常。它正在打开文件并写入内容,没有任何错误。即使以IIS用户帐户运行,也不会出错?