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

9

59

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??

Aporia answered 18/8, 2011 at 11:4 Comment(0)
D
136

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:

Decoction answered 12/9, 2011 at 11:12 Comment(13)
should probably ack the original. (social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/…)Opuntia
By the way, you can read this thread #1041766 which is really instructive if you want to use office interop.Decoction
Creating the directory worked for me. I also added full control to system, not sure if needed. Thanks.Sthilaire
I added permission to NetworkService user, to Desktop folder and it works. Regards!!Kunlun
Does anybody have an explanation for this behavior?Davey
I'm interested by WHY IT'S WORKING!! but really thanks guys you saved my day (or my week)Coatbridge
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.Whicker
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 problemMaurizia
Holy @#$!, this took me days to figure out. Problem solved, thanks mate!Michikomichon
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.Giantism
Any idea what to do if it's a Linux server running samba?Kakaaba
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.Lenna
Same here, 10/2022... Adding the System32 folder solved the problem for Interop.Excel 15.0 .Net 4.8!Hamford
U
20

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

Underclothing answered 4/7, 2014 at 15:28 Comment(3)
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 2016Beloved
My problem was fix by applying this approach. ThanksRhodia
Same for me with excel 16.0 64bit on Windows 11, Added full control to my user on C:\Windows\system32\config\systemprofile\DesktopEugenieeugenio
D
10

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.

Demavend answered 21/8, 2019 at 17:24 Comment(4)
My problem was fix by applying this approach. ThanksDeeann
This is the only approach that solved the problem for me. Thank you!Protractor
this worked for me, thanks a TONStranglehold
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.Sulphone
D
1

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

Ditch answered 23/6, 2015 at 9:12 Comment(0)
H
1

The following solution worked for me.

Create the directory C:\Windows\SysWOW64\config\systemprofile\Desktop

Haehaecceity answered 6/9, 2022 at 17:39 Comment(0)
H
0

I was previously attempt this problem then i resolved.

Solution:

I put the full permission to particular folder(Sub folder and files) and checked working fine.

Hazard answered 25/7, 2013 at 8:54 Comment(0)
D
0

I've wrapped my WCF in a Windows Service. Creating the Desktop Folders did solve it for me on one machine, but not on another.

My problem in the end was, that my Windows Service did not run under an active User of the machine. Configuring the service to run under a user which is active on the machine solved this problem for me so far.

Only the combination of

  • Existing Desktop Folder
  • Service running under a real user Account

got it working for me.

This article lead me to the full solution: Cannot access excel file

Desolation answered 5/5, 2015 at 6:54 Comment(0)
D
0

In my case, none of the solutions given worked for me (changing user in dcom settings, creating desktop folder and giving user full access to it, etc).

I finally realized I had a 64-bit version of excel. Uninstalling the 64-bit version and installing the 32-bit version of excel solved my solution to this error. This was with using Windows 10 and Microsoft Office Excel 2010.

Dunnock answered 8/7, 2022 at 15:36 Comment(0)
L
-1

This works

excel.exe /safe

This does not and gives the same error as the regular excel startup

excel.exe /automation

This also occurs for all MS Office 2007 apps for ANY network file. Local file access is fine.

Layette answered 31/12, 2012 at 19:32 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.