Я внедрил утилиту загрузки, которая загружает файлы в фоновом потоке. Теперь я хочу реализовать функциональность для экспорта результатов загрузки для каждого файла на лист excel. Для этой цели я использую библиотеку Microsoft.Office.Interop.Excel. Поэтому для этого я создаю книгу excel и делаю записи в ней. Моя проблема заключается в том, открываю ли я книгу в начале процесса загрузки и закрываю рабочей книги, когда процесс завершен, или я должен создать новое соединение excel каждый раз, когда хочу сделать запись? Обратите внимание, что загрузка может занять много времени.Должен ли я держать соединение рабочей книги excel открытым на C# или открывать новый каждый раз, когда мне нужно добавить новую строку?
ответ
Что-то иметь в виду с использованием Interop
заключается в том, что вы фактически создаете процесс в фоновом режиме excel.exe
, а затем с помощью DCOM для управления запущенным процессом.
Обычно это означает, что когда вы открываете файл в первый раз и Excel не работает, потребуется время для загрузки. Поэтому я предлагаю оставить файл открытым в фоновом режиме, если вы собираетесь делать инкрементные обновления.
Также помните, что Interops жестко запрограммированы для версии Office, на которую вы нацеливаетесь, а также для того, чтобы Office был установлен для работы.
Лично я всегда использую сторонние библиотеки для обработки Excel, поскольку они намного более эффективны, чем сборки Interop
, и не имеют жесткой зависимости от необходимости установки Office на компьютере.
Примеры, которые я использовал успешно являются: SpreadsheetGear и FlexCel
Я использую версию 15 сборки Interop, так будет, что работа с конкретной версией Microsoft Excel. –
Он будет работать с версией, соответствующей версии 15. Он может работать с более ранними версиями, но не гарантируется. MS регулярно обходится с открытым API между версиями, поэтому существует так много сторонних библиотек, которые вытесняют формат файла, а не версию Office API. – toadflakz
Вы абсолютно писали, библиотека interop - это абсолютная дерьмо, я использовал NPOI, и он работает очень хорошо. –