Добавление макроса в электронную таблицу Excel с помощью Java

#java #excel

#java #excel

Вопрос:

Я разрабатываю приложение, которое создает электронную таблицу Excel. Я использую Java с библиотекой docx4j, но у нее нет поддержки макросов, поскольку она не предоставляется через Open XML API. Мне просто интересно, знает ли кто-нибудь об обходном пути для добавления макроса в существующую электронную таблицу Excel с использованием Java (даже с другой библиотекой).

Спасибо

Комментарии:

1. Я сомневаюсь, что вы найдете что-нибудь для этого на основе Java (но я могу ошибаться!). Предположительно, вы можете добавить макрос с помощью собственных технологий MS (.NET, c # и т.д.), Это вариант?

2. Основная часть приложения должна быть закодирована с использованием Java. Но если это возможно (я далек от того, чтобы быть экспертом по Java), я могу добавить скрипт C #, выполняющий это. Возможно ли запустить скрипт C # с Java?

3. вы можете запустить любой процесс с Java. Однако не думаю, что вы действительно сможете выполнить .NET / c # в JVM.

4. Да, я понял, что JVM не может выполнить код C # / .NET. Я рассмотрю возможность создания скрипта на C # для добавления макроса. Спасибо! (Вы должны дать ответ, чтобы я мог его принять)

Ответ №1:

Если это один и тот же макрос во всех книгах, вы могли бы использовать шаблон? Это означает, что у вас есть пустая книга, которая содержит обобщенный makro, и это будет скопировано для каждой «новой» книги, которую вам нужно создать из Java.

Комментарии:

1. Не могли бы вы, пожалуйста, объяснить, как мы можем этого добиться. У меня есть файл .xlsb с макросом, и я хочу обновить несколько ячеек этого файла. Созданный новый Excel должен иметь тот же макрос без изменений.

Ответ №2:

Я не думаю, что вы найдете что-либо на основе Java, что сможет сделать это за вас. Однако я предполагаю, что собственные технологии MS (.NET, c # и т.д.) Смогут это сделать. Хотя (AFAIK) на самом деле вы не можете выполнить c # в JVM, вы можете выполнять системные вызовы из java для выполнения другой программы, используя Runtime.exec().