Подтвердить что ты не робот

Microsoft Office Excel не может получить доступ к файлу 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.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 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);

Он запускается непосредственно из визуальной студии (F5), но когда я пытаюсь получить к нему доступ с помощью IIS, он не будет работать. Выдает ошибку следующим образом: -

Microsoft Office Excel не может получить доступ к файлу 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'. Существует несколько возможных причин:
• Имя файла или путь не существует.
• Файл используется другой программой.
• Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая книга.

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

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

Я уже дал все разрешения на папку, где существует шаблон (.xlsx)

Любые предложения

4b9b3361

Ответ 1

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

  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. Для каталога Desktop добавьте Полные права доступа для соответствующий пользователь (например, в Win7 и IIS 7 & DefaultAppPool установить разрешения для пользователя IIS AppPool\DefaultAppPool).

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

Ответ 2

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

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

Поскольку у меня установлен 64-разрядный Excel, соответствующий каталог оказался C:\Windows\System32\Config\systemprofile\рабочий стол

Ответ 3

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

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

"hack" должен был добавить также права на пользователя Windows (тот, который использует PIA) в каталогах systemprofile/AppData​​strong > .

Надеюсь, что это поможет

Ответ 4

В моем случае я последовал предложению здесь и решил проблему.

Этапы:

  1. Запустите dcomcnfg
  2. Перейти к консоли Root \ Службы компонентов\Компьютеры\Мой компьютер\Конфигурация DCOM\Приложение Microsoft Excel
  3. Щелкните правой кнопкой мыши приложение Microsoft Excel
  4. Выберите Свойства
  5. Перейти на вкладку "Личность"
  6. Выберите Интерактивный пользователь.

На шаге 2, если вы не можете найти этот путь, попробуйте запустить mmc comexp.msc /32 вместо dcomcnfg.

Ответ 5

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

Решение:

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

Ответ 6

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

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

Только комбинация

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

заставил меня работать для меня.

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

Ответ 7

Это работает

excel.exe/safe

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

excel.exe/automation

Это также происходит для всех приложений MS Office 2007 для ЛЮБОГО сетевого файла. Доступ к локальному файлу в порядке.