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'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);

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

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

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

  • 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.

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

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


person Shubh    schedule 18.08.2011    source источник


Ответы (7)


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

  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 ).

Исходный пост с ответом:

person Eric Bonnot    schedule 12.09.2011
comment
вероятно, следует подтвердить оригинал. (social.msdn.microsoft.com / Forums / en / innovateonoffice / thread /) - person Michael Dausmann; 25.11.2011
comment
Кстати, вы можете прочитать эту ветку stackoverflow.com/questions/1041266/, что действительно поучительно, если вы хотите использовать взаимодействие с офисом. - person Eric Bonnot; 30.11.2011
comment
Создание каталога сработало для меня. Я также добавил полный контроль над системой, не уверен, что это нужно. Спасибо. - person live-love; 31.08.2012
comment
Я добавил разрешение пользователю NetworkService в папку рабочего стола, и он работает. С Уважением!! - person Sebastián; 26.09.2012
comment
Есть ли у кого-нибудь объяснение такому поведению? - person Florin Bombeanu; 20.11.2012
comment
Меня интересует, ПОЧЕМУ ЭТО РАБОТАЕТ !! но на самом деле спасибо, ребята, вы спасли мне день (или мою неделю) - person Frederic; 12.06.2013
comment
Я получал эту ошибку после перехода на Windows 7. Microsoft забыла поместить ее в эту папку при установке Office в Windows 7? Неужели они такие тупые! Тем не менее, мне интересно узнать, так ли это на самом деле. - person name_masked; 25.03.2014
comment
спасибо, это помогает мне исправить ту же проблему при планировании консольного приложения в планировщике Windows. хотите верьте, хотите нет, просто добавление этой папки решило проблему - person Iman; 23.05.2015
comment
Святой @ # $ !, это заняло у меня несколько дней, чтобы понять. Проблема решена, спасибо, дружище! - person devHead; 02.06.2015
comment
Так мы и решили нашу проблему. Как ни странно, у нас есть производственный сервер под управлением Windows Server 2008 R2 Enterprise, на котором нет папок рабочего стола, и приложение работает как шарм. Но на другом сервере с Windows Server 2008 R2 Standard эти две папки потребовались для работы. Я был бы очень рад увидеть объяснение того, почему две пустые папки могут решить эту проблему. - person Apostrofix; 22.07.2015
comment
Есть идеи, что делать, если на сервере Linux работает samba? - person Roger Dueck; 26.04.2016

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

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

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

person Nikhil    schedule 04.07.2014
comment
хорошая выноска !! Я искал, как решить эту проблему в течение 2 дней, и этот альтернативный каталог исправил мою проблему с использованием Windows Server 2016 и 64-битного Excel 2016 - person Taylor Francis; 21.02.2020
comment
Моя проблема была решена, применив этот подход. Спасибо - person Werdo; 10.11.2020

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

Шаги:

  1. Беги dcomcnfg
  2. Перейдите в Корень консоли \ Component Services \ Computers \ My Computer \ DCOM Config \ Microsoft Excel Application.
  3. Щелкните правой кнопкой мыши Приложение Microsoft Excel.
  4. Выберите Свойства.
  5. Перейдите на вкладку Личность
  6. Выберите Интерактивный пользователь.

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

person datchung    schedule 21.08.2019

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

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

«Взлом» заключался в добавлении прав пользователю Windows (использующему PIA) в каталогах systemprofile / AppData.

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

person Amaury Bauzac    schedule 23.06.2015

Раньше я пытался решить эту проблему.

Решение:

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

person user2617875    schedule 25.07.2013

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

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

Только сочетание

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

получил это работает для меня.

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

person Florian Moser    schedule 05.05.2015

Это работает

excel.exe / сейф

Это не так и дает ту же ошибку, что и при обычном запуске Excel.

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

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

person wbaz    schedule 31.12.2012