2013-06-14 16 views
0

У меня возникли проблемы с сохранением таблицы Excel при работе на сервере, при работе на локальном компьютере она прекрасно работает!Microsoft.Office.Interop.Excel._Workbook.SaveAs() Исключение: 0x800A03EC

Неужели кто-нибудь когда-либо сталкивался с этим раньше или может указать мне в правильном направлении?

Пул приложений работает под идентификатором «LocalSystem».

Спасибо!

я получаю следующую ошибку/трассировки стека:

Error saving the excel sheet: 
Exception from HRESULT: 0x800A03EC at  Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object FileFormat, 
Object  Password, Object WriteResPassword, Object ReadOnlyRecommended, Object 
CreateBackup,  XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object 
AddToMru, Object  TextCodepage, Object TextVisualLayout, Object Local) 
    at MiFiveDayReport.ExportToExcel.SaveAs(String filepath, XlFileFormat type) in 
G:\Development\MI Development\Technical  Development\MIPortal\MIPortal\Old_App_Code\ExportToExcel.cs:line 411 

Вот код, я использую, чтобы попытаться сохранить первенствовать документ:

try 
     { 
      if (log.IsInfoEnabled) log.Info("Saving..."); 
      if (string.IsNullOrEmpty(filepath)) 
       //Sets the filepath as the default 
       excelBook.SaveAs(this.filepath, type); 
      else 
       excelBook.SaveAs(filepath, type); 
      if (log.IsInfoEnabled) log.Info("Saved!"); 
      success = true; 
     } 
     catch (Exception ex) 
     { 
      //SendEmail e = new SendEmail("Error saving excel sheet: " + ex.Message); 
      //SendEmail e1 = new SendEmail("Error saving excel sheet: " + ex.StackTrace); 
      if (log.IsErrorEnabled) log.Error("Error saving the excel sheet: " 
            + ex.Message 
            + ex.StackTrace); 
      throw; 
     } 

Обновлено New Error:

Error creating excel application: Retrieving the COM class factory for component with 
CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 
80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, 
Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at MiFiveDayReport.ExportToExcel..ctor(String filepath) in G:\Development\MI Development\Technical Development\MIPortal\MIPortal\Old_App_Code\ExportToExcel.cs:line 94 

В следующей строке:

try 
     { 
      if (log.IsInfoEnabled) log.Info("Creating an excel application..."); 
      excelApp = new Application(); 
      if (log.IsInfoEnabled) log.Info("Excel application created"); 
     } 
     catch (Exception ex) 
     { 
      if (log.IsErrorEnabled) log.Error("Error creating excel application: " + ex.Message + ex.StackTrace); 
      throw; 
     } 
+0

Это звучит как проблема с разрешениями. Убедитесь, что пользователь имеет права на папку, в которой вы пытаетесь сохранить документ Excel. – jfrankcarr

+0

@jfrankcarr Вы имеете в виду пользователя, обращающегося к веб-сайту? – donpisci

+0

Учетная запись пользователя IIS должна иметь разрешения на запись файла. См. Http://stackoverflow.com/questions/5729264/what-are-all-the-user-accounts-for-iis-asp-net-and-how-do-they-differ – jfrankcarr

ответ

0

1) Пуск -> Выполнить -> ММС -32 -> нажмите клавишу ВВОД откроется новое окно 2) файл-> добавить удалить оснастку не-> из фиксирующих модулей Особенности строения выберите службы компонентов -> нажмите Добавить> кнопка 3) развернуть компоненты -> расширить компьютеры -> развернуть mycomputer -> расширить конфигурацию DCOM -> щелкнуть правой кнопкой мыши по приложению Microsoft Excel -> свойства -> вкладка безопасности 4) в разделе разрешения на запуск и активацию -> нажмите на настройку и нажмите кнопку «Изменить» 5) нажмите кнопку «Добавить» -> добавьте пользователя и предоставите весь доступ к вашему пользователю и нажмите кнопку «ОК» (учетная запись службы, в которой выполняется ваше приложение)

после этого заведите ниже папки упоминания

Если мы бежим в Windows Server 2008 64-разрядная/R2, · Перейдите в C: \ Windows \ SysWOW64 \ Config \ systemprofile папку и создайте следующий каталог «Desktop» Если мы бежим в Windows Server 32-разрядных · Перейдите в C: \ Windows \ System32 \ Config \ systemprofile \ папку Desktop и создайте следующий каталог «Desktop»

Это позволит решить эту проблему.

Смежные вопросы