Какой самый лучший / самый простой способ манипулировать объектами ActiveX в Java? - PullRequest
1 голос
/ 08 октября 2008

Я хочу, чтобы открыть и управлять файлами Excel с ActiveX. У меня был успех с библиотеками Python Win32 и Groovy Scriptom в других проектах, но на этот раз, если это возможно, нужно сделать это на чистой Java.

Я пробовал Jacob Java COM Bridge , но это не так просто и просто в использовании, и я не смог заставить его получать значения ячеек (даже если это лежащая в основе библиотека Scriptom). Есть ли альтернативы?

Ответы [ 4 ]

4 голосов
/ 08 октября 2008

Джейкоб действительно инструмент для работы здесь. Я рекомендую вам потратить некоторое время на изучение того, как работают COM и ActiveX, и я думаю, вы обнаружите, что им легче пользоваться. COM - это большое достижение, но это hard . Оболочки типа VB делают это простым (для ограниченного использования, на которое они работают), но это совсем не просто. У меня есть отличная книга по изучению COM, но сейчас у меня нет названия ...

Вы хотите узнать об интерфейсе IDispatch (именно для этого разработана большая часть интерфейса COM в Excel). Это неприятный, неприятный интерфейс (одна из тех вирусных вещей, которые вы можете сделать с ним так много, что становится невозможным сказать, что на самом деле происходит) - но изучение этого является ключевым.

Если у вас есть проблемы только в одной области (например, получение значения из ячейки), вы можете получить исходный код для Scriptom и посмотреть, что они делают (в конце концов, с открытым исходным кодом!).

Еще одно предложение - попытаться реализовать некоторые тестовые примеры вашего кода в VBA и убедиться, что вы правильно продумываете все возвращаемые значения. Когда мы выполняли автоматизацию Excel в одном из наших Java-приложений, мы реализовали общий алгоритм из Word VBA, проработали проблемные случаи и т. Д. После этого передача в Jacob была довольно простой.

  • K
0 голосов
/ 08 октября 2008

Вы смотрели на JExcelAPI? Вместо использования ActiveX это библиотека Java, которая непосредственно читает и записывает файлы Excel.

Не точный ответ на ваши вопросы, но он также может решить проблему, особенно если вы ищете чистое решение Java.

0 голосов
/ 08 октября 2008

Есть также JIntegra , которая делает то же самое. Также коммерческий. И есть JNIWrapper , который делает то же самое. опять же, тоже коммерческий.

0 голосов
/ 08 октября 2008

как насчет http://www.nevaobject.com/_docs/_java2com/java2com.htm - это коммерческий продукт, но работает лучше.

...