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

Posted

技术标签:

【中文标题】Microsoft Office Excel 无法访问文件\'c:\\inetpub\\wwwroot\\Timesheet\\App_Data\\Template.xlsx\'【英文标题】:Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'Microsoft Office Excel 无法访问文件'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx' 【发布时间】:2011-08-18 11:04:41 【问题描述】:

我的代码如下:-

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);

它直接从 Visual Studio (F5) 执行,但是当我尝试使用 IIS 访问它时它不会工作。 报错如下:-

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

我已经尝试过以下工作:-

文件夹和文件存在,授予 IUSR_###(IIS 用户)和文件所在文件夹中的 ASPNET 用户的访问权限。 在组件服务 (DCOM) 处授予适当用户访问权限。

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

有什么建议吗??

【问题讨论】:

【参考方案1】:

试试这个:

    创建目录

C:\Windows\SysWOW64\config\systemprofile\Desktop

(适用于 64 位 Windows 计算机上的 32 位版本 Excel/Office)或

C:\Windows\System32\config\systemprofile\Desktop

(适用于 32 位 Windows 计算机上的 32 位版本 Office 或 64 位 Windows 计算机上的 64 位版本 Office)。

    对于 Desktop 目录,添加 完全控制 权限 相关用户(例如在 Win7 & IIS 7 & DefaultAppPool 中为用户 IIS AppPool\DefaultAppPool 设置权限)。

带答案的原帖:

Excel 2007 automation on top of a Windows Server 2008 x64

【讨论】:

应该可以确认原件。 (social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/…) 顺便说一句,如果你想使用office interop,你可以阅读这个线程***.com/questions/1041266/…,这真的很有指导意义。 创建目录对我有用。我还为系统添加了完全控制,不确定是否需要。谢谢。 我向 NetworkService 用户添加了对桌面文件夹的权限,它可以工作。问候!! 有人对这种行为有解释吗?【参考方案2】:

请注意,在我的位置,添加 c:\windows\syswow64\config\systemprofile\desktop 目录不起作用。

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

因为我安装了 64 位 Excel,所以正确的目录原来是 c:\windows\system32\config\systemprofile\desktop

【讨论】:

很好的标注!!我一直在寻找如何解决这个问题 2 天,这个备用目录使用 windows server 2016 和 64 位 excel 2016 解决了我的问题 我的问题是通过应用这种方法解决的。谢谢【参考方案3】:

就我而言,我按照here 提供的建议解决了问题。

步骤:

    运行dcomcnfg 转到 控制台根目录 \Component Services\Computers\My Computer\DCOM Config\Microsoft Excel 应用程序 右键单击Microsoft Excel 应用程序 选择属性 转到身份标签 选择交互式用户。

在第 2 步中,如果您找不到该路径,请尝试运行 mmc comexp.msc /32 而不是 dcomcnfg

【讨论】:

我的问题是通过应用这种方法解决的。谢谢 这是为我解决问题的唯一方法。谢谢! 这对我有用,谢谢 TON 这对我也有用(可能与目录解决方案结合使用并给予该桌面目录适当的权限 - 因为我首先这样做但仍然没有成功)。只是想指出,对我来说,如果我在 IIS 中使用 ApplicationPoolId 作为身份,这不起作用,但可以使用“本地系统”或“自定义帐户(Windows 用户和密码)”..也在同一个窗口中你在第 5 步中,如果您进入安全性,请检查您是否也拥有正确的权限。【参考方案4】:

我想在 Eric Bonnot 的回答中添加一些内容: 当我使用具有 powerpoint PIA 的非管理员用户在 IIS 服务器上工作时,部分答案得到了解决。

我注意到如果 pptx 文件中有媒体(例如图片),我将无法打开该文件。

“hack”是在 systemprofile/AppData 目录中添加 Windows 用户(使用 PIA 的用户)的权限。

希望对你有帮助

【讨论】:

【参考方案5】:

我之前尝试过这个问题,然后我解决了。

解决方案:

我将完全权限放入特定文件夹(子文件夹和文件)并检查工作正常。

【讨论】:

【参考方案6】:

我已将我的 WCF 包装在 Windows 服务中。在一台机器上创建桌面文件夹确实为我解决了这个问题,但在另一台机器上却没有。

最后我的问题是,我的 Windows 服务没有在机器的活动用户下运行。到目前为止,将服务配置为在机器上处于活动状态的用户下运行为我解决了这个问题。

只有组合

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

让它为我工作。

这篇文章带我找到完整的解决方案:Cannot access excel file

【讨论】:

【参考方案7】:

这行得通

excel.exe /安全

这不会,并且会出现与常规 excel 启动相同的错误

excel.exe /自动化

对于任何网络文件的所有 MS Office 2007 应用程序也会发生这种情况。本地文件访问没问题。

【讨论】:

以上是关于Microsoft Office Excel 无法访问文件'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'的主要内容,如果未能解决你的问题,请参考以下文章

安装office2019版本后, vb无法引用Microsoft excel object library和Microsoft word object library 解决办法

加载类型库/DLL (Microsoft.Office.Interop.Excel.Application) 时出错

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

office2016 excel2016打开文件,会有十几秒的卡顿

Excel文档打开出现这种情况“Microsoft Office Excel遇到问题需要关闭,我们对此引起的不便表示抱歉”

添加 Microsoft.Office.Interop.Excel 参考