Microsoft Office Excel не может получить доступ к файлу 'c: \ inetpub \ wwwroot \ Timesheet \ App_Data \ Template.xlsx' - PullRequest
41 голосов
/ 18 августа 2011

У меня есть следующий код: -

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'. Есть несколько возможных причин:
• Имя файла или путь не существует.
• Файл используется другой программой.
• Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.

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

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

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

Есть предложения ??

Ответы [ 6 ]

105 голосов
/ 12 сентября 2011

Попробуйте:

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

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

Оригинальное сообщение с ответом:

12 голосов
/ 04 июля 2014

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

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

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

1 голос
/ 23 июня 2015

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

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

«Хаком» было также добавить права пользователю windows (пользователю, использующему PIA) в каталогах systemprofile / AppData .

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

0 голосов
/ 05 мая 2015

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

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

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

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

, заработала на меня.

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

0 голосов
/ 25 июля 2013

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

Решение:

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

0 голосов
/ 31 декабря 2012

Это работает

excel.exe / safe

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

excel.exe / Automation

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

...