#java #com #activex
Вопрос:
Я хочу открывать файлы Excel и управлять ими с помощью ActiveX. Я добился успеха с расширениями Win32 Python и библиотеками скриптов Groovy в других проектах, но на этот раз мне нужно сделать это на чистой Java, если это возможно.
Я попробовал COM-мост Джейкоба Java, но он не кажется таким простым или простым в использовании, и я не смог заставить его извлекать значения ячеек (хотя это библиотека, лежащая в основе Скриптом). Есть ли альтернативы?
Ответ №1:
Джейкоб действительно является инструментом для этой работы. Я рекомендую вам потратить время, чтобы немного узнать о том, как работают COM и ActiveX, и я думаю, вы обнаружите, что это проще в использовании. COM-это большое достижение, но это сложно. Обертки, такие как VB, делают это легким (для ограниченного использования, для которого они работают), но это совсем не просто. У меня есть отличная книга по изучению COM, но сейчас у меня нет подходящего названия…
Вы хотите узнать об интерфейсе IDispatch (это то, вокруг чего разрабатывается большая часть COM-интерфейса Excel). Это отвратительный, отвратительный интерфейс (одна из тех вирусных вещей, которые вы можете сделать с ним так много, что становится невозможно сказать, что происходит на самом деле), но изучение его является ключевым.
Если у вас возникли проблемы только в одной области (т. Е. Получение значения из ячейки), вы можете взять исходный код для Scriptom и посмотреть, что они делают (в конце концов, с открытым исходным кодом!).
Еще одно предложение-попытаться реализовать некоторые тестовые примеры вашего кода в VBA и убедиться, что вы правильно продумали все возвращаемые значения. Когда мы занимались автоматизацией Excel в одном из наших Java-приложений, мы реализовали общий алгоритм из VBA Word, проработали проблемные случаи и т. Д… После этого переход к Джейкобу был довольно простым.
- K
Комментарии:
1. Я использовал VB/VBA, и да, это делает COM легким. Ваш совет полезен, если бы вы могли добавить название книги, когда найдете ее, я был бы признателен. Какую библиотеку Java/COM вы предпочитаете?
Ответ №2:
как насчет http://www.nevaobject.com/_docs/_java2com/java2com.htm — это коммерческое, но работает лучше.
Ответ №3:
Вы смотрели на JExcelAPI? Вместо использования ActiveX это библиотека Java, которая напрямую считывает и записывает файлы Excel.
Не точный ответ на ваши вопросы, но это может решить проблему так же хорошо, особенно если вы ищете чистое решение Java.
Ответ №4:
Есть также JIntegra, которая делает то же самое. Тоже коммерческая. И есть JNIWrapper, который делает то же самое. опять же, тоже коммерческая.