Java-Jacob标题
在我的网站上,有一个功能可以在机器上打开一个Excel文件,并通过Jacob库(Jacob-1.14.3)处理它 每次从新线程调用此代码时:Java-Jacob标题,java,multithreading,jacob,Java,Multithreading,Jacob,在我的网站上,有一个功能可以在机器上打开一个Excel文件,并通过Jacob库(Jacob-1.14.3)处理它 每次从新线程调用此代码时: //In a new thread everytime ActiveXComponent excelApp = null; try { info("Openning Excel application..", 1); ComThread.InitSTA(); //ComThread.InitMTA(); //ComTh
//In a new thread everytime
ActiveXComponent excelApp = null;
try {
info("Openning Excel application..", 1);
ComThread.InitSTA();
//ComThread.InitMTA();
//ComThread.InitSTA(true);
//ComThread.InitMTA(true);
excelApp = new ActiveXComponent("Excel.Application");
excelApp.setProperty("DisplayAlerts", false);
excelApp.setProperty("Visible", false);
[...]
catch (Exception e) {
throw e;
} finally {
if (excelApp != null) {
info("Closing Excel app..", 1);
excelApp.invoke("Quit");
ComThread.Release();
System.gc();
}
}
一旦有超过1个线程处理Excel,我就会出现以下错误:
com.jacob.com.ComFailException:无法将名称映射到dispid:XXX
XXX代表我正在查找的任何属性(名称、工作簿、退出等)。运行1个线程时不会出现错误
在互联网上花了几个小时后,我只有一份我不理解的文档:
我尝试过ComThread.InitSTA/MTA函数,但似乎没有什么能解决问题
如何让多个Excel实例从不同的线程与我的应用程序通信?可能会有所帮助。这个家伙有多个线程,与一个Excel实例对话。但是我有多个线程,每个线程对话框有一个Excel实例。当我有1个线程-1个Excel实例时,它可以正常工作。可能会有帮助。这家伙有多个线程与一个Excel实例对话。但是我有多个线程,每个线程对话框有一个Excel实例。当我有1个线程-1个Excel实例时,它可以正常工作。