asp excel error 80040154

У меня проблема с моим проектом asp (C #).

У меня возникла следующая ошибка: получение фабрики COM-класса для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154, когда я пытаюсь создать файл excel с сервера. Я уже видел некоторые сообщения об этом, и я не знаю, применимы ли они ко мне, и я не мог решить проблему с ними. Позвольте мне показать вам мой код и объяснить.

using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; private Excel.Application oXL; private Excel._Workbook oWB; private ExcelFile f; protected void bExcel_Click(object sender, EventArgs e) { if (Session["mode"] == null) Response.Redirect(accueil); // Set the values oXL = new Excel.Application(); oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); f = new ExcelFile((Excel._Worksheet)oWB.ActiveSheet); oXL.Visible = true; /* displaying data from a gridview, non revelant here (?) */ oXL.Visible = true; f = null; oXL = null; oWB = null; } 

И объяснение ошибки (строка 225):

 Erreur source: Ligne 224 : // Set the values Ligne 225 : oXL = new Excel.Application(); Ligne 226 : oWB = (Excel._Workbook) oXL.Workbooks.Add(Missing.Value)); Ligne 227 : f = new ExcelFile((Excel._Worksheet)oWB.ActiveSheet); 

Хорошо, поэтому у меня возникает эта проблема, когда я пытаюсь создать файл excel с сервера, но не тогда, когда я запускаю режим debbugging с локальной версией (код работает). На всех рабочих станциях моей компании установлен MS Office Excel на компьютере, но не на сервере, который я использую, и мой вопрос в том, есть ли решение, не устанавливая Excell на сервере?

Я стараюсь избегать установки Excel на сервере, потому что сервер не из моей службы, поэтому я бы хотел его избежать (но если это единственное (и лучшее / безопасное) решение, я сделаю это), если смогу. Я попытался скопировать библиотеки в папку сборки на сервере (так как все рабочие станции одинаковые, ссылки shoud работают?), Но я не смог найти разрешения, которые я должен был предоставить, чтобы разрешить доступ к библиотекам с сервера (надеюсь Я не слишком объясняю это).

Заранее спасибо,

EDIT: Есть вещи, которые я не понимаю, это то, что в предыдущем коде, который уже был написан, приложение Excel можно запустить следующим образом:

 Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "attachment;filename=registrationData.xls"); // Pour les caractères spéciaux (é, à, etc...) Response.ContentEncoding = System.Text.Encoding.Unicode; Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); using (StringWriter sw = new StringWriter()) using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { Table table = new Table(); TableRow tRow = new TableRow(); /* Adding each information of the grid using tRow.Cells.Add() */ table.RenderControl(htw); // Response needs the Htmlwriter HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End(); } 

И это работает, без установки Excel, потому что (я не уверен, хотя) он только вызвал приложение Excel, заполнил его буфером (StringWriter). Но я не хочу использовать таблицу, потому что таблица скучна для использования, и я уже сделал файл с помощью Interop … Если бы я мог найти разрешения на использование сборок, установленных на сервере, зная, что все рабочие станции есть Excel, я должен использовать его так, как этот код использует?

Interop не поддерживается в MS-сценариях с несколькими сценариями .

Существует множество возможностей для чтения / редактирования / создания файлов Excel без Interop / установки Excel на сервере:

MS предоставляет бесплатный OpenXML SDK V 2.0 – см. http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx (только для XLSX)

Это может читать + писать файлы MS Office (включая Excel).

Еще один бесплатный вариант см. http://www.codeproject.com/KB/office/OpenXML.aspx (только для XLSX)

Если вам нужно больше походить на обработку старых версий Excel (например, XLS, а не только XLSX), рендеринг, создание PDF-файлов, формул и т. Д., Тогда есть разные бесплатные и коммерческие библиотеки, такие как ClosedXML (только для XLSX), EPPlus (только для XLSX) , Aspose.Cells , SpreadsheetGear , LibXL и Flexcel и т. Д.

Поскольку моя стажировка заканчивается на этой неделе (да, немного поздно, чтобы найти что-то подобное), я не могу работать над чем-то новым сейчас, уже слишком поздно, поэтому я просто вернусь к изменениям и использую предыдущий процесс создания файлов Excel (что Я улучшился, хотя).

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

Спасибо за ответы, ребята.

  • Развертывание DLL (объекта COM) в Excel vba reference
  • Мне нужна команда для защиты файла Excel от python
  • Python com между python и excel
  • Почему мой объект Workbook имеет значение null, когда я устанавливаю его в справочную книгу?
  • Приложение Excel возвращает «Сохранить файл» вместо диалога «Сохранить как»
  • Попытка выполнить автоматизацию Office с помощью Excel 2007, но использует Excel 2003
  • Excel не показывает значение в качестве даты, хотя указано с помощью VT_DATE и использует SystemTimeToVariantTime
  • Работа с Excel 2007 из приложения win32
  • Excel Detect PasteСпециальная операция
  • Максимальное количество COM-соединений с Excel и другими приложениями MS Office
  • PHP Неустранимая ошибка: не удалось создать COM-объект: Ошибка выполнения сервера
  • Interesting Posts

    Найти все совпадения в столбце и добавить их из другого столбца?

    Элегантный способ экспорта данных из объекта IEnumerable в таблицу Excel в c #?

    Отображение поля времени даты всегда отображает задание времени до полуночи с помощью таблицы to_spreadsheet (Axlsx)

    Excel VBA Add Worksheet: «Эта команда не может использоваться для нескольких выборов»

    Именованный диапазон при копировании диаграмм

    соединение списков в листе excel

    Как отображать данные о текущей температуре в течение 1 минуты (Excel-VBA Macro)

    VBA. Каждый флажок в цикле реагирует на изменения, как остановиться?

    Почему мой фоновый цвет не применяется (Aspose Cells)?

    Чтение значения ячейки в Excel vba и запись в другую ячейку

    VBA – Excel: разделите строку в другом столбце

    Автоматически запускать макрос VBA при изменении значения ячейки

    Диапазон VBA Sum, включая вариант

    API-интерфейс Excel 2013 COM отображает ExportAsFixedFormat под учетной записью службы

    Как публиковать файлы PDB вместе с установкой надстройки Excel ClickOnce?

    Давайте будем гением компьютера.