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

时间:2011-08-18 11:04:42

标签: c# excel export-to-excel excel-interop

我的代码如下: -

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)所在的文件夹

有什么建议吗?

6 个答案:

答案 0 :(得分:105)

试试这个:

  1. 创建目录
  2.   

    C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

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

      

    C:\的Windows \ system32 \设置\ systemprofile \桌面

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

    1. 对于桌面目录,添加完全控制权限 相关用户(例如,在Win7& IIS 7& DefaultAppPool中为用户 IIS AppPool \ DefaultAppPool 设置权限。)
    2. 原帖和答案:

答案 1 :(得分:12)

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

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

由于我安装了64位Excel,因此正确的目录就是 C:\ WINDOWS \ system32 \设置\ systemprofile \桌面

答案 2 :(得分:2)

就我而言,我遵循了here提供的建议并解决了问题。

步骤:

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

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

答案 3 :(得分:1)

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

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

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

希望这有帮助

答案 4 :(得分:0)

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

解决方案:

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

答案 5 :(得分:-1)

这有效

  

excel.exe / safe

这不会和常规excel启动时出现相同的错误

  

excel.exe / automation

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