Как использовать Microsoft.Office.Interop.Excel на компьютере без установленного MS Office?

Я пишу приложение, которое работает с файлами excel. Мне нужна функция для удаления листа. Я должен использовать сборку Microsoft.Office.Interop.Excel.dll.

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

Не удалось загрузить файл или сборку 'office, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c' или одну из его зависимостей

Я понимаю, что проблема возникает, когда MS Office не установлен на компьютере. Клиент не хочет устанавливать и покупать MS Office на сервере не по любой цене.

Я устанавливаю «Перераспределяемые первичные сборки взаимодействия» на машине разработчика, как описано здесь: http://forums.asp.net/t/1530230.aspx/1 и снова скомпилируйте мой проект.

Пример кода:

public bool DeleteSheet(string tableName) { Excel.Application app = null; Excel.Workbooks wbks = null; Excel._Workbook _wbk = null; Excel.Sheets shs = null; bool found = false; try { app = new Excel.Application(); app.Visible = false; app.DisplayAlerts = false; app.AlertBeforeOverwriting = false; wbks = app.Workbooks; _wbk = wbks.Add(xlsfile); shs = _wbk.Sheets; int nSheets = shs.Count; for (int i = 1; i <= nSheets; i++) { Excel._Worksheet _iSheet = (Excel._Worksheet)shs.get_Item(i); if (_iSheet.Name == tableName) { _iSheet.Delete(); found = true; Marshal.ReleaseComObject(_iSheet); break; } Marshal.ReleaseComObject(_iSheet); } if (!found) throw new Exception(string.Format("Table \"{0}\" was't found", tableName)); _wbk.SaveAs(connect, _wbk.FileFormat, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } finally { _wbk.Close(null, null, null); wbks.Close(); app.Quit(); Marshal.ReleaseComObject(shs); Marshal.ReleaseComObject(_wbk); Marshal.ReleaseComObject(wbks); Marshal.ReleaseComObject(app); } return true; } 

Исключение

Получение фабрики COM-класса для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

происходит на линии

 app = new Excel.Application(); 

Может ли кто-нибудь посоветовать, как эта функция успешно работает?

Вы не можете использовать Microsoft.Office.Interop.Excel без установленного офиса ms.

Просто выполните поиск в google для некоторых библиотек, что позволяет изменять xls или xlsx:

вы можете создать сервис и генерировать excel на сервере, а затем разрешить клиентам загружать excel. cos покупает лицензию excel на 1000 ppl, лучше иметь одну лицензию для сервера.

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

Если «Клиент не хочет устанавливать и покупать MS Office на сервере не по какой-либо цене», то вы не можете использовать Excel … Но я не могу получить трюк: все дело в одной базовой лицензии Office, которая стоит примерно 150 USD … И я думаю, что тратить время на поиск альтернативы будет стоить гораздо больше, чем эта сумма!

Ищите GSpread.NET. Вы можете работать с Google Spreadsheets, используя API из Microsoft Excel. Вам не нужно переписывать старый код с использованием нового API Google. Просто добавьте несколько строк:

 Set objExcel = CreateObject("GSpreadCOM.Application"); app.MailLogon(Name, ClientIdAndSecret, ScriptId); 

Это проект OpenSource, и он не требует установки Office.

Документация доступна здесь http://scand.com/products/gspread/index.html

  • Извлечение изображений из документа Excel 2007 - 2010
  • Interop to Spire Migration, формула становится жестко закодированной
  • C # Excel Interop: как форматировать ячейки для хранения значений в виде текста
  • Ограничение удаления столбца Excel для незащищенного листа с использованием inter op excel C #
  • Получение цвета ячеек Excel с помощью interop
  • Как ускорить запись в лист Excel
  • C # - можно ли использовать Letter Coords (A1) с workSheet.Cells?
  • VB.NET Импорт Excel-взаимодействия
  • C # Программно изменить формат ячейки всех ячеек Excel на общий
  • Excel Interop - Отменить выбор
  • Как сделать excel interop на windows 2008?
  • Interesting Posts

    Копирование динамического диапазона в новые рабочие книги, добавление заголовка и сохранение новых рабочих книг в локальный каталог до закрытия

    Ошибка «без модуля с именем xlwings» в Windows при вызове сценария Python в файле XLSM

    Лучше всего построить SQL-запрос или экстраполировать его с помощью другой программы?

    asp.net скачать файл excel в IE6

    Отображение номеров страниц в листе Excel, сгенерированном с использованием C # .NET.

    Excel VBA – использование переменной в функциональном диапазоне

    Импорт веб-страницы в электронную таблицу Excel с использованием VBA

    Рекурсивное дерево TreeView (с использованием цветов)

    Преобразование вложенного дампа содержимого JSON в XLS

    Запуск кода VBA на нескольких листах в книге

    adodb .FIND вопрос

    SumIf by Weekday & User

    Задание диапазона от A2 до бесконечности

    Преобразование формулы байпаса excel csv в поля, начинающиеся с + или –

    Область выбора макрокоманды Excel и вставка

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