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议么??
尝试这个:
- 创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)。
- 对于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应用程序也会出现这种情况。 本地文件访问很好。