Генерация Excel с использованием Java и создать макрос в Excel - PullRequest
1 голос
/ 07 марта 2019

У меня есть Java-код, который берет данные из MongoDB, а затем создает Excel (.xls), содержащий эти данные, используя Apache POI, но в отформатированном виде.

Мое последнее требование - отправить последний лист на листе Excel по почте на набор почтовых идентификаторов.Я не могу использовать почтовый API Java для этого, так как подробности SMTP о почтовом ящике мне не будут предоставлены.На данный момент я планирую создать макрос внутри сгенерированного Excel для отправки данных.Макрос, который я создал для отправки почты:

Sub Send_Selection_Or_ActiveSheet_with_MailEnvelope()
'Working in Excel 2002-2016
    Dim Sendrng As Range

    On Error GoTo StopMacro

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    'Note: if the selection is one cell it will send the whole worksheet
    Set Sendrng = Selection

    'Create the mail and send it
    With Sendrng

        ActiveWorkbook.EnvelopeVisible = True
        With .Parent.MailEnvelope

            ' Set the optional introduction field thats adds
            ' some header text to the email body.
            .Introduction = "This is a test mail."

            With .Item
                .To = "iamnithinprakash@gmail.com"
                .Subject = "My subject"
                .Send
            End With

        End With
    End With

StopMacro:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    ActiveWorkbook.EnvelopeVisible = False

End Sub

Но я не знаю, как создать этот макрос с помощью Java.

1 Ответ

2 голосов
/ 07 марта 2019

ОП спрашивает, как создать лист Excel, используя библиотеку Apache POI, включающую макросы.К сожалению: это невозможно.

Цитирование POI ограничения :

Макросы не могут быть созданы.В настоящее время нет планов поддержки макросов.

К счастью, он продолжается:

Однако чтение и перезапись файлов, содержащих макросы, безопасно сохранит макросы.

Итак,что может сработать:

  • вы создаете пустой лист Excel "вручную" с Excel, который включает ваш макрос
  • , который выиспользуйте POI для добавления данных к такому существующему листу
  • , и вы сохраняете это «вместе» в новый лист

(или в некотором другом варианте, напримерсоздайте этот пустой шаблон, скопируйте его и откройте / обновите одну из копий)

...