Мне приходится извлекать метаданные из большого количества (мой небольшой рабочий образец содержит сотни, общее количество, вероятно, будет тысячами) файлов Microsoft Office, в основном из файлов Word.
Версии этих файлов Word идут от Word 2.0 до Word 2007.
Я должен сделать это в .net 3.5 (используя С#), и это локальное приложение winforms.
Думаю, я могу извлечь метаданные из самых последних с помощью OLE Automation (DsoFile.dll). Я успешно проделал это с некоторыми из них.
Проблема в том, что старые форматы не поддерживаются DsoFile. Они не используют OLE, вероятно.
Я много гуглил и обнаружил, что лучшим (вероятно, единственным) способом получить нужные мне данные было использование антислова (http://www.winfield.demon.nl/). С помощью антислова я могу вызвать его процесс и собрать его вывод. Он может извлечь некоторые данные, но не все, что мне нужно. Пример: антиворд дает мне только одну из сохраненных дат, а мне нужно их две.
Также есть wvware, но я думаю, что это только для Linux.
Другим вариантом был бы gnu libextractor, но я не могу найти способ использовать его в .net.
Office Interop был бы отчаянным последним средством. Я не проверял этот вариант, но я предполагаю, что это не вариант, когда нужно обрабатывать огромное количество файлов с достойной производительностью.
Кто-нибудь может помочь? Если вам нужно больше данных, просто спросите.
Извините за мой английский, я не носитель языка.