2013-03-11 86 views
0

我試圖導入任何形式(XLS/XSLX)的Excel工作表爲通過一個XPage我的數據庫工作,下面的代碼返回一個錯誤:無法獲得的Apache POI在SSJS

importPackage(org.apache.poi.ss.usermodel); 

var tempFile:java.io.File = fileData.getServerFile(); 

var wb:WorkBook = WorkbookFactory.create(tempFile); 
var sheet:Sheet = wb.getSheetAt(0); 
var rows = sheet.getPhysicalNumberOfRows(); 

「WorkbookFactory找不到」

我已經把球泡路徑中的API:/tradesec(9).nsf/WebContent/WEB-INF/lib/poi-3.9-20121203.jar

我已經試過這個沒有importPackage但沒有運氣。 'org'not found

請指教!

/M

更新: 我現在已經複製所有的罐子從POI到JVM/lib/ext目錄中的java.policy增加撥款的一切,創造了一個Java類作爲一個bean。 仍然得到例外:

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:56) 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39) 
java.lang.reflect.Constructor.newInstance(Constructor.java:527) 
com.ibm.jscript.types.JavaAccessObject.construct(JavaAccessObject.java:260) 
com.ibm.jscript.types.JavaWrapperObject.construct(JavaWrapperObject.java:1) 
com.ibm.jscript.ASTTree.ASTNew.interpret(ASTNew.java:109) 
com.ibm.jscript.ASTTree.ASTMember.interpret(ASTMember.java:106) 
com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:88) 
com.ibm.jscript.ASTTree.ASTVariableDecl.interpret(ASTVariableDecl.java:82) 
com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100) 
com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:109) 
com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100) 
com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:109) 
com.ibm.jscript.ASTTree.ASTIf.interpret(ASTIf.java:85) 
com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100) 
com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:109) 
com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119) 
com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139) 
com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435) 
com.ibm.jscript.JSExpression.access$1(JSExpression.java:424) 
com.ibm.jscript.JSExpression$2.run(JSExpression.java:414) 
java.security.AccessController.doPrivileged(AccessController.java:310) 
com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410) 
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251) 
com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234) 
com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:221) 
com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111) 
com.ibm.xsp.actions.ActionGroup.invoke(ActionGroup.java:135) 
com.ibm.xsp.component.UIViewRootEx.invokePhaseMethodBinding(UIViewRootEx.java:1735) 
com.ibm.xsp.controller.FacesControllerImpl.invokePhaseMethodBinding(FacesControllerImpl.java:444) 
com.ibm.xsp.controller.FacesControllerImpl.access$0(FacesControllerImpl.java:438) 
com.ibm.xsp.controller.FacesControllerImpl$ViewPhaseListener.beforePhase(FacesControllerImpl.java:527) 
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:197) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120) 
com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264) 
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248) 
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204) 
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583) 
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1281) 
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:860) 
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:803) 
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572) 
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265) 
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658) 
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297) 
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 

我在這部分知識是相當有限的,我必須說。

目前我正在考慮遠離這一點,並開始實施一個普通的舊文本文件。恐怕我的緊張項目時間表需要太多的開銷和依賴。 如果有人在那裏找到解決方案,我很樂意去探索它

回答

0

嘗試添加WorkbookFactory的完整路徑,這是我之前在引用Jars中的類時完成的。

+0

我有,但它不工作或我錯過了什麼? – 2013-03-11 21:17:21

+0

像這樣或許var wb:WorkBook = org.apache.poi.ss.usermodel.WorkbookFactory.create(tempFile); – 2013-03-11 21:52:47

1

從Domino數據庫加載時,存在與dom4j(由POI XLSX解析器使用)相關的類加載器相關問題。嘗試將所需的jar添加到jvm/lib/ext目錄中的文件系統(包括Domino和Notes)並打開java.security一點(請參閱http://www.wissel.net/blog/d6plinks/SHWL-8JYAT5)。

我與無限制的grant { permission java.security.AllPermission; };成功。最好限制一下,但我還沒有找到時間來進一步調查問題。

您也可以嘗試通過加載POI 4的XPages的OSGi庫加載的罐子:http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=POI%204%20XPages

+0

如何從SSG中的OSGI加載罐子? – 2013-03-12 00:21:09

+0

該文檔鏈接自OpenNTF項目站點:http://my.webgate.biz/poi/documentation.nsf/viewdoc.xsp?docid=installguide – 2013-03-12 07:46:38

+0

請閱讀它,但我沒有找到任何有關如何引用OSGI的參考plugon jars ... – 2013-03-12 08:21:12

2

確保您添加POI-OOXML-3.9-20121203.jar到構建路徑也。 poi-3.9-20121203.jar jar不包含WorkbookFactory類。

+0

不要忘記[依賴關係](http://poi.apache.org/overview.html#components)! – Gagravarr 2013-03-12 11:45:14