Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'

76,758

Solution 1

Try this:

  1. Create the directory

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

(for the 32-bit version of Excel/Office on a 64-bit Windows computer) or

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

(for a 32-bit version of Office on a 32-bit Windows computer or a 64-bit version of Office on a 64-bit Windows computer).

  1. For the Desktop directory, add Full control permissions for the relevant user (for example in Win7 & IIS 7 & DefaultAppPool set permissions for user IIS AppPool\DefaultAppPool).

Original post with answer:

Solution 2

Let me note that in my place, adding the c:\windows\syswow64\config\systemprofile\desktop directory didn't work.

The point is that WOW64 stands for Windows on Windows64, that means it actually applies for 32-bit programs running on the 64bit OS.

Since I have 64-bit Excel installed, the proper directory turned out to be the c:\windows\system32\config\systemprofile\desktop

Solution 3

In my case, I followed the suggestions provided here and solved the problem.

Steps:

  1. Run dcomcnfg
  2. Go to Console Root \Component Services\Computers\My Computer\DCOM Config\Microsoft Excel Application
  3. Right click Microsoft Excel Application
  4. Select Properties
  5. Go to Identity tab
  6. Select The interactive user.

In step 2, if you can't locate that path then try running mmc comexp.msc /32 instead of dcomcnfg.

Solution 4

I would like to add something to the Eric Bonnot's answer : The answer worked out partially as I worked on a IIS server with a non-admin user with the powerpoint PIA.

I noticed that I could not open a pptx file if this one had a media (picture for example) in it.

The "hack" was to add also the rights to the windows user (the one using the PIA) on the systemprofile/AppData directories.

Hope this helps

Share:
76,758
Shubh
Author by

Shubh

Guten tag!!!!!! About Me(on a personal aspect....) I live in Bangalore,India. 2 years ago my lifetook a U-turn where I met my partner in crime and got married. I enjoy driving and travelling places provided it's starting of the month :) Timeline Year 2005-2009 : Graduated in Automobile Engineering from Chennai,India. Year 2010-2011 : Started my 1st job and learned/worked on asp.net with SQL. Year 2011-2012 : Learned and worked on jQuery and Javascript with asp.net-mvc as backend. Year 2012-2014 : Learned and worked on knockoutjs and OOJS with MVC API as backend. Year 2014-2015 : Learned and worked on Backbone, javascript and OOJS with ASP.NET MVC API as backend. Year 2015-2016 : Learning angular and other happening frameworks. I have worked with ravendb, signalr, toastr and many more libraries.

Updated on March 02, 2021

Comments

  • Shubh
    Shubh about 3 years

    I have my code as follows :-

    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;
    

    Now for the line :-

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

    It gets executed directly from the visual studio (F5) but when i try to access it with IIS it wont work. Throws error as follows:-

    Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'. There are several possible reasons:
    • The file name or path does not exist.
    • The file is being used by another program.
    • The workbook you are trying to save has the same name as a currently open workbook.

    I have tried the work around as:-

    • Folder and the file exist, giving access to the IUSR_### (IIS user) and to the ASPNET user in the folder where the file is.
      • At Component Services(DCOM) given access to appropriate user.

    I have already given all permission's to the folder where the template(.xlsx) exists

    Any suggestions??

  • Michael Dausmann
    Michael Dausmann over 12 years
  • Eric Bonnot
    Eric Bonnot over 12 years
    By the way, you can read this thread stackoverflow.com/questions/1041266/… which is really instructive if you want to use office interop.
  • live-love
    live-love over 11 years
    Creating the directory worked for me. I also added full control to system, not sure if needed. Thanks.
  • Sebastián
    Sebastián over 11 years
    I added permission to NetworkService user, to Desktop folder and it works. Regards!!
  • Florin Bombeanu
    Florin Bombeanu over 11 years
    Does anybody have an explanation for this behavior?
  • Frederic
    Frederic almost 11 years
    I'm interested by WHY IT'S WORKING!! but really thanks guys you saved my day (or my week)
  • name_masked
    name_masked about 10 years
    I was getting this error after moving to Windows 7. Did Microsoft forget to put it in this folder as part of Office installation on Windows 7? Are they really that dumb! Nonetheless, I am interested in finding out if that indeed was the case.
  • Iman
    Iman almost 9 years
    thank you it helps me to fix the the same problem when scheduling a console app in windows scheduler . believe it or not just adding this folder solved the problem
  • devHead
    devHead almost 9 years
    Holy @#$!, this took me days to figure out. Problem solved, thanks mate!
  • Apostrofix
    Apostrofix almost 9 years
    This is also the way we solved our problem. Strangely, we have a production server running Windows Server 2008 R2 Enterprise that doesn't have the Desktop folders, and the application works like a charm. But on another server with Windows Server 2008 R2 Standard, it needed these two folders in order to work. I would be really happy to see an explanation of why two empty folders can solve this issue.
  • Roger Dueck
    Roger Dueck about 8 years
    Any idea what to do if it's a Linux server running samba?
  • Taylor Francis
    Taylor Francis about 4 years
    good callout!! i've been searching how to fix this problem for 2 days and this alternate directory fixed my my problem using windows server 2016 and 64 bit excel 2016
  • Werdo
    Werdo over 3 years
    My problem was fix by applying this approach. Thanks
  • milad shafiei
    milad shafiei almost 3 years
    My problem was fix by applying this approach. Thanks
  • Mohammad Anini
    Mohammad Anini over 2 years
    This is the only approach that solved the problem for me. Thank you!
  • Sunil Mathari
    Sunil Mathari about 2 years
    this worked for me, thanks a TON
  • avenmore
    avenmore about 2 years
    Adding the System32 folder solved the problem on Win10 x64 21H2 with Office 2021 for a program using Microsoft.Office.Interop.Excel 15.0 with .Net 4.72, so the problem still persists.
  • Spluf
    Spluf about 2 years
    This worked for me as well (probably in combination with the directory solution and giving that desktop directory proper permission - since I did that first but still without success). Just want to point out that for me this doesn't work if I use ApplicationPoolId for identity in IIS, but works with either "Local System" or "Custom Account (windows user and pass)".. Also in the same window where you are in step 5, if you go to security, check that you have the right permissions there as well.