Java 使用COM4J创建excel文件

Java 使用COM4J创建excel文件,java,excel,netbeans,nullpointerexception,com4j,Java,Excel,Netbeans,Nullpointerexception,Com4j,我在尝试启动excel实例以将数据导出到时收到空指针异常。我已经尝试将最新版本的COM4J.jar添加到我的netbeans项目中。如果您能就如何找出问题所在提出建议,我将不胜感激 这条线好像断了 excelApp=Microsoft.Excel.ClassFactory.createApplication 并输出如下: Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at Micr

我在尝试启动excel实例以将数据导出到时收到空指针异常。我已经尝试将最新版本的COM4J.jar添加到我的netbeans项目中。如果您能就如何找出问题所在提出建议,我将不胜感激

这条线好像断了

excelApp=Microsoft.Excel.ClassFactory.createApplication

并输出如下:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at Microsoft.Excel.ClassFactory.createApplication(ClassFactory.java:89)
    at com.pmiapp.common.ExcelComWrapper.openExcel(ExcelComWrapper.java:37)
    at com.pmiapp.dmpc.Report.jMenuItemSaveToFileActionPerformed(Report.java:661)
    at com.pmiapp.dmpc.Report.access$300(Report.java:118)
    at com.pmiapp.dmpc.Report$7.actionPerformed(Report.java:559)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6504)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6269)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4860)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NullPointerException
    at com4j.COM4J.loadNativeLibrary(COM4J.java:566)
    at com4j.COM4J.<clinit>(COM4J.java:522)
    ... 43 more

我不知道,但也许你需要以某种方式初始化那个库?当您在静态类链上调用一个没有参数的方法时,或者至少看起来是这样,NPE来自COM4J库本身。在下载了COM4J附带的示例Excel项目并收到了相同的问题后,我已经切换到Apache POI,现在过得更好了。