2016-11-10 3 views
0

Я внедрил утилиту загрузки, которая загружает файлы в фоновом потоке. Теперь я хочу реализовать функциональность для экспорта результатов загрузки для каждого файла на лист excel. Для этой цели я использую библиотеку Microsoft.Office.Interop.Excel. Поэтому для этого я создаю книгу excel и делаю записи в ней. Моя проблема заключается в том, открываю ли я книгу в начале процесса загрузки и закрываю рабочей книги, когда процесс завершен, или я должен создать новое соединение excel каждый раз, когда хочу сделать запись? Обратите внимание, что загрузка может занять много времени.Должен ли я держать соединение рабочей книги excel открытым на C# или открывать новый каждый раз, когда мне нужно добавить новую строку?

ответ

1

Что-то иметь в виду с использованием Interop заключается в том, что вы фактически создаете процесс в фоновом режиме excel.exe, а затем с помощью DCOM для управления запущенным процессом.

Обычно это означает, что когда вы открываете файл в первый раз и Excel не работает, потребуется время для загрузки. Поэтому я предлагаю оставить файл открытым в фоновом режиме, если вы собираетесь делать инкрементные обновления.

Также помните, что Interops жестко запрограммированы для версии Office, на которую вы нацеливаетесь, а также для того, чтобы Office был установлен для работы.

Лично я всегда использую сторонние библиотеки для обработки Excel, поскольку они намного более эффективны, чем сборки Interop, и не имеют жесткой зависимости от необходимости установки Office на компьютере.

Примеры, которые я использовал успешно являются: SpreadsheetGear и FlexCel

+0

Я использую версию 15 сборки Interop, так будет, что работа с конкретной версией Microsoft Excel. –

+0

Он будет работать с версией, соответствующей версии 15. Он может работать с более ранними версиями, но не гарантируется. MS регулярно обходится с открытым API между версиями, поэтому существует так много сторонних библиотек, которые вытесняют формат файла, а не версию Office API. – toadflakz

+0

Вы абсолютно писали, библиотека interop - это абсолютная дерьмо, я использовал NPOI, и он работает очень хорошо. –