Microsoft Office Excel не может получить доступ к файлу "c:inetpubwwwrootTimesheetApp данныешаблон.файлы XLSX'

у меня есть код следующим образом:

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, он не будет работать. Выдает ошибку следующим образом: -

Майкрософт Office Excel не может открыть c:inetpubwwwrootTimesheetApp_DataTemplate файл'.файлы XLSX'. Существует несколько возможных причин:
• Имя файла или путь не существует.
• Файл используется по другой программе.
* Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая книга.

Я пробовал работу вокруг как: -

  • папка и файл существуют, предоставляя доступ к IUSR_### (пользователь IIS) и пользователю ASPNET в папке, где находится файл.
    • в компонентных службах (DCOM) предоставляется доступ к соответствующему Пользователю.

Я уже дал все разрешения на папку, в которой находится шаблон(.XLSX-файл) существует

какие предложения??

6 ответов


попробуйте это:

  1. создать каталог

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

(для 32-разрядной версии Excel/Office на 64-разрядном компьютере Windows) или

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

(для 32-разрядной версии Office на 32-разрядном компьютере Windows или 64 - разрядной версии Office на 64-разрядной Windows компьютер.)

  1. на рабочий стол добавьте полный контроль разрешения для соответствующий пользователь (например, в Win7 & IIS 7 & DefaultAppPool установите разрешения для пользователя IIS AppPool\DefaultAppPool).

Оригинальный пост с ответом:


позвольте мне отметить, что на моем месте, добавив c:\windows\syswow64\config\systemprofile\desktop справочник не работал.

дело в том, что WOW64 означает Windows на Windows64, то есть фактически применяется для 32-разрядных программ, работающих на 64-битной ОС.

поскольку у меня установлен 64-битный Excel, правильный каталог оказался c:\windows\system32\config\systemprofile\desktop


Я хотел бы добавить что-то к ответу Эрика Бонно : Ответ работал частично, поскольку я работал на сервере IIS с пользователем, не являющимся администратором, с powerpoint PIA.

Я заметил, что не могу открыть файл pptx, если в нем есть носитель (например, изображение).

"Хак" должен был добавить также права на пользователя windows (тот, который использует PIA) на systemprofile / AppData справочники.

надеюсь, что это помогает


Я ранее пытался эту проблему, затем я решил.

устранение:

Я поставил полное разрешение на определенную папку (подпапку и файлы) и проверил работу нормально.


я завернул свой WCF в службу Windows. Создание папок рабочего стола решило это для меня на одной машине, но не на другой.

моя проблема в конце концов заключалась в том, что моя служба Windows не запускалась под активным пользователем машины. Настройка службы для запуска под пользователем, который активен на машине, решила эту проблему для меня до сих пор.

только комбинацию

  • Существующая Папка Рабочего Стола
  • сервис под реальный аккаунт пользователя

Он работает на меня.

эта статья приведет меня к полному решению:не удается получить доступ к файлу excel


Это работает

excel.exe / safe

Это не делает и дает ту же ошибку, что и обычный запуск excel

excel.exe / автоматизация

Это также происходит для всех приложений MS Office 2007 для любого сетевого файла. Доступ к локальным файлам в порядке.