Что является самым раздражающим / самая странная вещь, которая произошла с Вами использующий Excel Interop

После разработки использования Excel Interop с .NET некоторое время, я все больше становился раздражаемым из-за, сколько "нечетные вещи" происходят - такие как этот вопрос, который я отправил ранее - Моя проблема.
Я ценю, что это не прямой вопрос и больше collaberation событий, но я действительно думаю, что было бы полезно однако узнать народы самые большие раздражения / странные вещи, которые они имели и как они преодолели их.
Тем путем я могу узнать то, что выходит, я могу столкнуться в будущем :)

Спасибо

10
задан 4 revs, 3 users 73% 23 May 2017 в 12:09
поделиться

6 ответов

Исчерпание памяти из-за большого количества открытых различных экземпляров приложений Office.

Тщательное программирование может решить эту проблему, но внутренние ошибки в приложениях могут испортить ваши предположения.

2
ответ дан 4 December 2019 в 00:24
поделиться

Вы получите другой Interop, скомпилированный на машине с другой версией MS Office.

Это в основном означает дополнительную машину (физическую или виртуальную) и дополнительные лицензии Visual Studio, Windows и MS Office для разработки дополнительной версии.

При развертывании версии на клиенте мне пришлось архивировать образ виртуальной машины для компиляции этой версии, поскольку я не мог гарантировать, что буду использовать одну и ту же версию MS Office на своей машине для разработки.

2
ответ дан 4 December 2019 в 00:24
поделиться

Самая неприятная особенность взаимодействия с Excel для меня заключается в том, что каждый раз, когда вы делаете что-нибудь , он создает объекты COM за кулисами, но все они должны быть удалены, иначе Excel не закроется при вызове Close () . И если вы пропустите один, часто сложно понять, где именно.

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

6
ответ дан 4 December 2019 в 00:24
поделиться

Странный MOST - это необязательные параметры во всех методах Office. Для меня как программиста на C # Missing.Value - это как разумеется.

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

result.SaveAs('file',Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value)

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

ref и также непригодные конструкции.
Одна рекомендация - используйте VB.NET для взаимодействия с офисами - это подходящий инструмент для таких вещей, или дождитесь C # 4.0

2
ответ дан 4 December 2019 в 00:24
поделиться

Отсутствие поддержки автоматизации...

Тот факт, что Excel нельзя запускать в автоматизированной или неинтерактивной среде, например, на сервере. Это можно сделать, но не надежно и не без взлома систем, что часто нецелесообразно для продуктовых сред. Но это не ограничивается Excel.

Подробнее см. здесь . Недавно я провел исследование некоторых альтернатив, которые вы можете найти здесь: Чтение файлов Excel как серверного процесса

Это привело к бесчисленным проблемам для меня и других, и я прочитал много постов в Stackoverflow о проблемах, связанных с использованием Excel на сервере. Просто это не стоит того, чтобы идти по этому пути, тем более, что Vista и выше просто не работают с Office 2k7 через автоматизацию.

0
ответ дан 4 December 2019 в 00:24
поделиться

Меня больше всего раздражает то, что вы получаете, казалось бы, случайные ошибки / исключения / сбои.

Например, мне иногда нужно преобразовать большой набор из тысяч книг между форматами (xls / xlsx) из консольного приложения C #. Excel редко обрабатывает все эти книги за один проход без ошибок. Многократный запуск вызывает проблемы с разными файлами. Итак, если a.xls и b.xls находятся в моем наборе файлов, Excel может выйти из строя на a.xls на первом проходе и b.xls на втором проходе.

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

Я наблюдал такое поведение в Excel 2003 и Excel 2007.

В конце концов я изменил свое приложение, чтобы учесть этот факт, и отслеживать, какие книги были успешно преобразованы, чтобы второй проход мог убрать беспорядок оставил первый проход.

0
ответ дан 4 December 2019 в 00:24
поделиться