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)
Любые предложения
Ответы
Ответ 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).
- Для каталога 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/AppDatastrong > .
Надеюсь, что это поможет
Ответ 4
В моем случае я последовал предложению здесь и решил проблему.
Этапы:
- Запустите
dcomcnfg
- Перейти к консоли Root
\ Службы компонентов\Компьютеры\Мой компьютер\Конфигурация DCOM\Приложение Microsoft Excel
- Щелкните правой кнопкой мыши приложение Microsoft Excel
- Выберите Свойства
- Перейти на вкладку "Личность"
- Выберите Интерактивный пользователь.
На шаге 2, если вы не можете найти этот путь, попробуйте запустить mmc comexp.msc /32
вместо dcomcnfg
.
Ответ 5
Я ранее пытался эту проблему, а затем разрешил.
Решение:
Я предоставил полное разрешение на конкретную папку (подпапка и файлы) и проверил работоспособность.
Ответ 6
Я завернул мой WCF в службе Windows. Создание папок рабочего стола разрешило это для меня на одной машине, но не на другом.
Моя проблема в конце концов заключалась в том, что моя служба Windows не запускалась под активным пользователем машины. Настройка службы для запуска под пользователем, который активен на машине, решил эту проблему для меня до сих пор.
Только комбинация
- Существующая папка рабочего стола
- Служба работает под учетной записью реального пользователя
заставил меня работать для меня.
Эта статья приводит меня к полному решению: Не удается получить доступ к файлу excel
Ответ 7
Это работает
excel.exe/safe
Это не дает и дает ту же ошибку, что и обычный запуск excel
excel.exe/automation
Это также происходит для всех приложений MS Office 2007 для ЛЮБОГО сетевого файла. Доступ к локальному файлу в порядке.