Я использую C# VSTO и Interop lib для разработки надстройки excel. для проверки значения каждой ячейки, прежде чем вставлять эти значения в другую книгу с форматированием. Мой фактический запрос состоит в том, чтобы обрабатывать (как можно быстрее) ячейки с некоторыми критериями.Обработка больших файлов Excel с использованием нескольких потоков
Я использовал WorkSheet.Cells.SpecialCells() для получения Excel.Range объектов моего интереса и использования потоков для обработки Excel.Range (который возвращается SpecialCells()) одновременно. После являются некоторые из замечаний/вопросов:
- кажется Excel.Range не может быть разделена на основе смещения и длины (т.е. я не могу получить новый объект Range из существующего диапазона на основе некоторых смещения и количество)
- Если мы разделили объект диапазона в потоках и попытались обработать ячейки в разных партиях, мы получим следующее исключение: «Фильтр сообщений показал, что приложение занято. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))« Это также оставляет эту партию клеток необработанной.
Любые вводы или указатели для решения вышеупомянутых проблем были бы полезными. Также любые предложения по обработке больших файлов excel быстро, скажем, в секундах (сейчас это самая большая бутылочная горловина)
Я ожидаю, что содержимое COM, которое происходит в этих вызовах объектов Range, не похоже на несколько потоков. Если требуется только чтение и запись на новый рабочий лист, возможно, посмотрите на [OpenXML SDK] (https://msdn.microsoft.com/en-us/library/office/bb448854.aspx) или полностью управляемый C# Библиотека Excel, такая как [EPPLUS] (http://epplus.codeplex.com/) – rene
Спасибо за информацию. , .. Я рассмотрю оба варианта: –