Вопрос

У меня есть ASP.NET приложение, которое позволяет пользователям экспортировать данные об отсутствии своих сотрудников каждый месяц в Microsoft Excel.В данный момент приложение генерирует следующее исключение

Исключение:Не удается создать ActiveX-компонент.

со следующей трассировкой стека

Система.Исключение:Не удается создать ActiveX-компонент.в Microsoft.VisualBasic.Взаимодействие.CreateObject(строковый ПрогИд, строковое имя_сервера) в HR.ManagerSummary.ExportToExcel() в H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2 ime\ManagerSummary.aspx.vb: строка 935 в HR.ManagerSummary.btnExcel_Click(отправитель объекта, EventArgs e) в H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2 ime\ManagerSummary.aspx.vb: строка 891 в System.Web.UI.WebControls.Кнопка.OnClick(EventArgs e) в System.Web.UI.WebControls.Кнопка.Вызовите postbackevent(String eventArgument) в System.Web.UI.WebControls.Кнопка.System.Web.UI.IPostBackEventHandler.Вызовите postbackevent(строковый аргумент события) в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler SourceControl, строка eventArgument) в System.Web.UI.Page.Поднимите postbackevent(NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain(Логическое значение includeStagesBeforeAsyncPoint, Логическое значение includeStagesAfterAsyncPoint)

Ошибка кода в строке CreateObject.

    'Create the Excel object
    Dim objXL As Object = CreateObject("Excel.Application") ' New Microsoft.Office.Interop.Excel.Application
    Dim objWB As Object = objXL.Workbooks.Add
    Dim objWS As Object = objWB.Worksheets(1)

Я установил разрешение в DCOM Config для приложения Microsoft Excel для учетной записи IUSR_, но это не решило проблему.Мы будем очень признательны за любые идеи.

Ваше здоровье

Джеймс

Это было полезно?

Решение

После переноса наших приложений ASP.NET на новое оборудование я продолжил изучение этой проблемы и нашел решение.

Чтобы устранить проблему, откройте "Службы компонентов" из административных инструментов и выполните следующие действия:

  • Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCOM -> Приложение Microsoft Excel
  • Щелкните правой кнопкой мыши приложение Microsoft Excel -> Свойства -> Вкладка Безопасность
  • Нажмите Настроить для получения "Разрешений на запуск и активацию" -> Редактировать -> Добавить
  • Введите "СЕТЕВАЯ СЛУЖБА", нажмите "Проверить имена", нажмите "ОК".
  • Разрешите "Локальный запуск" и "Локальную активацию" для "СЕТЕВОЙ СЛУЖБЫ", затем нажмите "ОК".
  • Выберите Настроить для "Прав доступа" -> Редактировать -> Добавить
  • Введите "СЕТЕВАЯ СЛУЖБА", нажмите "Проверить имена", нажмите "ОК".
  • Разрешите "Локальный доступ" для "СЕТЕВОЙ СЛУЖБЫ", затем нажмите "ОК".
  • Нажмите кнопку ОК

ASP.NET Теперь приложение может успешно создать рабочий лист Microsoft Excel, содержащий экспортированные данные.

Другие советы

Вы зарегистрировали ActiveX на сервере?

http://support.microsoft.com/kb/146219

Устройство электронных таблиц для .NET это позволит вам сохранять рабочие книги xls и xlsx непосредственно в поток ответов с помощью IWorkbook.SaveToStream.Все это безопасный управляемый код на C #, поэтому нет необходимости запускать что-либо от имени администратора, и вы не столкнетесь с проблемами, которые возникают при взаимодействии Excel COM на сервере ASP.NET.

Вы найдете несколько простых примеров ASP.NET отчетов Excel (C# и VB) с помощью SpreadsheetGear здесь и скачайте бесплатную пробную версию здесь если вы хотите попробовать это сами.

Отказ от ответственности:Я владелец компании SpreadsheetGear LLC

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top