当前位置: 首页 > 面试题库 >

Microsoft Excel Macro运行Java程序

能可人
2023-03-14
问题内容

我已经学会了在Jxl和POI API的帮助下使用Java程序读写Excel文件。是否可以在宏的帮助下运行Java程序?


问题答案:

是的,有可能。

实际上有很多方法,希望您喜欢我的示例

为了证明这一点,我创建了一个程序,其中一些文本作为参数发送,并且程序以更改后的版本作为响应。我做了一个可运行的罐子。第一个示例从args中读取参数,而从标准输入中读取其他参数。

文件 Hello.javaH1.jar

public class Hello {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");

        if (args.length > 0) 
            sb.append(' ').append(args[0]);
        System.out.println(sb.append('.').toString());
    }
}

文件 Hello2.javaH2.jar

import java.util.Scanner;

public class Hello2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder("Hello");

        sb.append(' ').append(sc.nextLine());
        System.out.println(sb.append('.').toString());
    }
}

您可以将它们保存在一个jar中,但是随后需要创建并使用清单(这有点过分杀伤)。

现在,在Excel中,我添加一个模块和对Windows脚本宿主对象的引用。如果您不喜欢sleep,则可以将其替换为DoEvents

'add a reference to Windows Script Host Object Model
'for example : Tools-References
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub RunSleep( _
    exec As WshExec, _
    Optional timeSegment As Long = 20 _
)
    Do While exec.Status = WshRunning
        Sleep timeSegment
    Loop
End Sub

Private Function RunProgram( _
    program As String, _
    Optional command As String = "" _
) As WshExec
    Dim wsh As New WshShell
    Dim exec As WshExec

    Set exec = wsh.exec(program)
    Call exec.StdIn.WriteLine(command)
    Call RunSleep(exec)
    Set RunProgram = exec
End Function

为了测试它,我将文件保存到c:\驱动器并使用了代码:

Public Sub Run()
    Dim program As WshExec
    Set program = RunProgram("java -jar ""C:\\H1.jar"" Margus")
    Debug.Print "STDOUT: " & program.StdOut.ReadAll

    Set program = RunProgram("java -jar ""C:\\H2.jar", "Margus")
    Debug.Print "STDOUT: " & program.StdOut.ReadAll
End Sub

就我而言,我收到了以下回复:

标准输出:你好玛格斯。

标准输出:你好玛格斯。



 类似资料:
  • 问题内容: 我看了一些其他的SO问题,没有找到任何解决我问题的方法…我有一个Main.java文件(如下)和一个OthelloLib.jar文件,没有关联的源文件。 运行失败,并 还有更多错误。SimplePlayer和BetterPlayer在jar中定义。我如何告诉Java这个罐子?这个命令:不会引起错误,但是我仍然不知道如何运行程序。如果我运行,java会抱怨: 但是TimeoutExcep

  • 万事知其然,要知其所以然,所以本节带大家来详细了解一下 Java 程序的执行过程。 从《 使用记事本编写运行Java程序》一节的案例可以看出, Java 程序的运行必须经过编写、编译和运行 3 个步骤。 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。 编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .cl

  • 问题内容: 您将如何依次执行三个线程?例如。线程1,线程2,线程3。不可能将一个线程的引用传递给另一个线程并从run()方法调用。 因此代码应如下所示: 并应该把 这可以通过使用ThreadPoolExecutor并使用阻塞队列来实现,但即使那样也不是可以接受的答案。 问题答案: 在java.util.concurrent包中使用ExecutorService。更精确地使用

  • 我在目录位置/home/oracle/naresh 文件可插入。java,可插入。类,runjava。sh,ojdbc6。jar位于/home/oracle/naresh目录位置 InsertToTable.java是将数据插入到表中的文件。它在运行时利用ojdbc6.jar。当独立运行下面的外壳脚本时,java将成功运行并将数据插入到表中。 从cron运行相同的shell脚本时,java文件未运

  • 嗨,我是新的Docker和尝试写一个新的图像从头开始。我编写这个dockerFile是为了编译和运行一个在同一个目录中可用的简单java程序。 这是DockerFile。 Docker构建成功,如下所示

  • 问题内容: 所以我在这里有一个菜鸟般的时刻,我以前从未使用过命令行来运行Java程序,但现在我需要。我遇到的问题是,当我尝试运行程序时,出现ClassNotFoundException。我的课叫做OmadUpdate。我已经使用javac命令将OmadUpdate.java文件编译为OmadUpdate.class。我已经检查了目录,并且它们都绝对存在,但是当我运行java OmadUpdate命

  • 我下载了一个java程序,它由两个文件夹src和classes组成,分别包含源文件和类文件。现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件。更准确地说,源文件和类文件的路径是src/edu/univ/。java和classes/edu/univ/。班假设包含main函数的文件是main。java,如何从命令行运行此程序。 我尝试过: 我也尝试过

  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运