Microsoft Office Excel不能访问文件'c:\ inetpub \ wwwroot \ Timesheet \ App_Data \ Template.xlsx'

我有我的代码如下: –

Microsoft.Office.Interop.Excel.Application oXL = null; Microsoft.Office.Interop.Excel.Sheets sheets; Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Workbooks.Add(System.Reflection.Missing.Value); /* * Here is the complete detail's about Workbook.Open() * * Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, * Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, * Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) */ Workbook workbook = excel.Workbooks.Open( System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"), Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); sheets = workbook.Worksheets; 

现在的线路: –

 workbook = excel.Workbooks.Open( System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"), Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

它直接从视觉工作室(F5)执行,但是当我尝试访问它与IIS它不会工作。 引发错误如下: –

Microsoft Office Excel无法访问文件“c:\ inetpub \ wwwroot \ Timesheet \ App_Data \ Template.xlsx”。 有几个可能的原因:
?文件名或path不存在。
•该文件正在被另一个程序使用。
?试图保存的工作簿与当前打开的工作簿具有相同的名称。

我已经尝试了解决方法:

  • 文件夹和文件存在,可以访问IUSR _ ###(IIS用户)并访问文件所在文件夹中的ASPNET用户。
    • 在组件服务(DCOM)允许访问适当的用户。

我已经将所有权限授予模板(.xlsx)所在的文件夹

有什么build议么??

尝试这个:

  1. 创build目录C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop (对于64位Windows计算机上的Excel / Office的32位版本)或C:\ Windows \ System32 \ config \ systemprofile \ Desktop在32位Windows计算机上的Office的32位版本或在64位Windows计算机上的64位版本的Office)。
  2. 对于Desktop目录,请为相关用户添加完全控制权限(例如,在用户IIS AppPool \ DefaultAppPool的 Win7&IIS 7&DefaultAppPool设置权限中)。

原帖与答案:

  • 在Windows Server 2008 x64之上的Excel 2007自动化

让我注意到在我的地方,添加c:\ windows \ syswow64 \ config \ systemprofile \ desktop目录不起作用。

关键是WOW64代表Windows64上的Windows,这意味着它实际上适用于在64位操作系统上运行的32位程序。

由于我已经安装了64位的Excel,正确的目录竟然是c:\ windows \ system32 \ config \ systemprofile \ desktop

我想向Eric Bonnot的答案中添加一些内容:答案部分解决,因为我使用powerpoint PIA与非pipe理员用户在IIS服务器上工作。

我注意到,如果这个文件有一个媒体(例如图片),我无法打开一个pptx文件。

“hack”也是将权限添加到systemprofile / AppData目录中的windows用户(使用PIA的用户)。

希望这可以帮助

我以前试图这个问题,然后我解决了。

解:

我把完整的权限到特定的文件夹(子文件夹和文件),并检查工作正常。

我已经在Windows服务中包装了我的WCF。 创build桌面文件夹在一台机器上为我解决了这个问题,而不是在另一台机器上。

我的问题最终是,我的Windows服务没有在机器的活跃用户下运行。 将服务configuration为在计算机上处​​于活动状态的用户下运行至今为止解决了此问题。

只有组合了

  • 现有的桌面文件夹
  • 服务在真实用户帐户下运行

让它为我工作。

本文引导我到完整的解决scheme: 无法访问Excel文件

这工作

excel.exe /安全

这不,并提供与常规的Excel启动相同的错误

excel.exe /自动化

对于任何networking文件的所有MS Office 2007应用程序也会出现这种情况。 本地文件访问很好。