SP2010: Excel Services “you do not have permissions” faulty error
I ran into a weird situation today where it took me while to figure out what was causing it. These were the symptoms:
- A user reported he could succesfully open older Excel files from a document library, but newer ones could not be opened.
- The error popping up showed in Excel Services telling the user:
“You do not have permissions to open this file”
- The file(s) did not have unique permissions, permissions were the same as the other (working) files.
- The file was not checked-out or something like that.
- With a site collection administrator account, the file opened just fine.
- The library was set to open files in the client application because the Excel files are incompatible with Excel Services.
Eventually I found the cause. It was this checkbox:
The permission of the user was set to “View Only”. Note what the description says:
“Document types with server-side file handlers can be viewed in the browser but not downloaded”
The older Excel files are .XLS, the new ones are .XLSX. Because the older ones are not displayed in Excel Services, they’re downloaded by default: no problem. But the newer ones, SharePoint wants to open in Excel Services. This is weird, because the library setting was to open the files in the client application, not in the browser. Apparantly, the Read permission level overrides this behavior.
Now Excel Services tries to open the file, but it’s imcompatible and cannot be renderen in the browser. Whenever a file is incompatible; Excel Services offers the user to download it. But now SharePoint denies this because files with server-size file handlers may not be downloaded due to the Read permission level. Result: access denied error.
So as long as your .XSLX files are compatible with Excel Services, you will not notice this problem. But as soon as they’re not; this error will pop up leaving your users guessing why they are being denied access to a file which they technically have access to.
Hope this helps others to save time 🙂