Я сомневаюсь, что есть что-то, что вы могли бы сделать, чтобы улучшить производительность свойств документа. Я считаю, что он реализован в виде простого списка, а не словаря или хэш-таблицы. На самом деле, я не верю, что список отсортирован, поэтому с 8000 записей, в среднем половина из них, или 4000, нужно было бы получить доступ, чтобы найти свойство, которое вы ищете.
Возможно, вы не захотите использовать CustomDocumentProperties в качестве словаря. Вместо этого вы можете попробовать поместить все 8000 ваших записей в пользовательский словарь, сериализовать его, а затем добавить весь сериализованный словарь в CustomDocumentProperties как одну запись. Таким образом, чтобы использовать его, вы должны получить доступ к CustomDocumentProperties, десериализовать словарь, а затем использовать его несколько раз. Когда это будет сделано, если в словаре будут какие-либо изменения, вам придется повторно сериализовать его и сохранить обратно в CustomDocumentProperties, что вы, вероятно, захотите сделать только один раз - например, непосредственно перед сохранением своей книги. (Возможно, вы захотите поместить код для повторной сериализации и сохранить свой пользовательский словарь в CustomDocumentProperties в событии Workbook.BeforeSave .)