Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'
Solution 1
Try this:
- 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).
- 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:
- Run
dcomcnfg
- Go to Console Root \Component Services\Computers\My Computer\DCOM Config\Microsoft Excel Application
- Right click Microsoft Excel Application
- Select Properties
- Go to Identity tab
- 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
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, 2021Comments
-
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??
- Folder and the file exist, giving access to the IUSR_### (IIS user) and to the ASPNET user in the folder where the file is.
-
Michael Dausmann over 12 yearsshould probably ack the original. (social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/…)
-
Eric Bonnot over 12 yearsBy the way, you can read this thread stackoverflow.com/questions/1041266/… which is really instructive if you want to use office interop.
-
live-love over 11 yearsCreating the directory worked for me. I also added full control to system, not sure if needed. Thanks.
-
Sebastián over 11 yearsI added permission to NetworkService user, to Desktop folder and it works. Regards!!
-
Florin Bombeanu over 11 yearsDoes anybody have an explanation for this behavior?
-
Frederic almost 11 yearsI'm interested by WHY IT'S WORKING!! but really thanks guys you saved my day (or my week)
-
name_masked about 10 yearsI 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 almost 9 yearsthank 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 almost 9 yearsHoly @#$!, this took me days to figure out. Problem solved, thanks mate!
-
Apostrofix almost 9 yearsThis 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 about 8 yearsAny idea what to do if it's a Linux server running samba?
-
Taylor Francis about 4 yearsgood 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 over 3 yearsMy problem was fix by applying this approach. Thanks
-
milad shafiei almost 3 yearsMy problem was fix by applying this approach. Thanks
-
Mohammad Anini over 2 yearsThis is the only approach that solved the problem for me. Thank you!
-
Sunil Mathari about 2 yearsthis worked for me, thanks a TON
-
avenmore about 2 yearsAdding 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 about 2 yearsThis 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.