Синхронизация между Приложением Java и Приложением Microsoft через Джейкоба - PullRequest
1 голос
/ 16 февраля 2011

В моем Java-приложении я подключаюсь к Microsoft Excel с библиотеками Jacob. Все хорошо, но я не знаю, как я могу перехватить com события, когда какие-либо изменения на странице Excel происходят с использованием библиотек Jacob Например, в моем проекте я подключаю базу данных, беру таблицы значений и копирую эти значения в ячейки страницы Excel. Всякий раз, когда значение ячейки изменяется, значение таблицы также изменяется. Вот и я хочу синхронизацию между java и приложением Microsoft Excel от Jacob.

1 Ответ

1 голос
/ 12 октября 2012

Не используйте Java для этого. См. Этот вопрос: Событие Excel OnChange , с акцентом на этот ответ . Вы должны получить доступ к вашей базе данных, используя com прямо из Excel. Это легко, используя ADO . Этот учебник ADO от w3schools выглядит также отлично.

Если задача слишком сложна для выполнения непосредственно из Excel, вы можете подумать о том, чтобы поместить где-нибудь маленький маркер (например, в базе данных), чтобы данные изменились, и обработать этот маркер из другого приложения, возможно, приложения Java. Сложность заключается в том, что учетные данные для доступа к базе данных должны быть жестко закодированы в листе Excel. Но вы можете создать отдельного пользователя базы данных с узкими правами доступа к базе данных.

Просматривая ваш комментарий, я также попытался использовать событие Изменить в Excel, чтобы обнаружить изменения, сделанные другими пользователями. Мой опыт работы с Excel 2003 показывает, что это работает только локально. То есть событие вызывается только для пользователя, который внес изменение. Если у многих пользователей открыт рабочий лист, они не получают событие Изменить , вызванное изменениями других пользователей. Так что твой подход неосуществим. Вы можете проверить это в Excel 2010, но у меня сложилось впечатление, что события в целом работают только локально. Не могу найти ничего в сети об этом. Только эта общая статья: Отслеживание изменений в общей рабочей книге .

...