【问题标题】:Generate a excel using java and create a macro in the excel使用java生成excel并在excel中创建宏
【发布时间】:2019-03-07 12:44:23
【问题描述】:

我有一个 java 代码,它从 MongoDB 获取数据,然后使用 Apache POI 创建一个包含此数据的 excel(.xls),但采用格式化的方式。

我的最终要求是将 excel 表中的最后一个工作表邮寄到一组邮件 ID。我无法使用 Java 邮件 API 来执行此操作,因为不会向我提供邮箱的 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 创建这个宏。

【问题讨论】:

    标签: java excel vba outlook apache-poi


    【解决方案1】:

    OP 询问如何使用包含宏的 Apache POI 库创建 Excel 工作表。不幸的是:这是不可能的。

    引用兴趣点limitations

    无法创建宏。目前没有支持宏的计划。

    幸运的是,它还在继续:

    但是,读取和重写包含宏的文件将安全地保留宏。

    那么,可以解决什么问题:

    • 您使用 Excel“手动”创建一个 Excel 工作表,其中包含您的宏
    • 您使用 POI 将数据添加到此类现有工作表中
    • 您将“一起”保存到新工作表中

    (或它的一些变体,例如创建那个空模板,复制它,然后打开/更新其中一个副本)

    【讨论】:

    • 感谢@GhostCat。这是个好主意,但我无法手动创建 Excel 文件。这是 web 服务的一部分,根据提供的输入生成 excel 表。
    • 所以看来如果我需要将宏添加到 excel 表中,那么我必须使用 poi 以外的插件创建 excel。
    • @NitKrish 您以什么格式创建 Excel 文件?旧的 .xls 格式还是新的 .xlsx 格式?你写了 xls 但我想确认一下
    • @GhostCat 是的,我正在创建一个 .xls 文件。
    • 我认为你的想法要好得多。我已经隔离了这个特定的功能,我正在添加一个不包含数据但只包含宏的 Excel。我将尝试使用一些 JAVA-to-COM 桥来调用宏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多