2012-12-17 30 views
-2

我想读的时候下面的行执行我得到一个IO错误得到错误,而使用Apache POI

String fileName = request.getParameter("file"); 

XSSFWorkbook wb = new XSSFWorkbook(); 

wb = new XSSFWorkbook(new FileInputStream(fileName)); //error wen executing this line 

当我上面的方法试了tempdoc.xlsm文件中读取文件.XLSM我刚开一个IO异常java.io.FileNotFoundException的捕以下消息:文件名(该系统找不到指定的文件)

任何人都可以帮我一下吧......

但现在我得到followinr异常这是栈跟踪

重度:在org.apache.xmlbeans.impl.values.NamespaceContext $ NamespaceContextStack Java堆空间 (NamespaceContext.java:78) :Servlet.service()进行的servlet UploadData抛出异常 java.lang.OutOfMemoryError。 at org.apache.xmlbeans.impl.values.NamespaceContext $ NamespaceContextStack。(NamespaceContext.java:75) at org.apache.xmlbeans.impl.values.NamespaceContext.getNamespaceContextStack(NamespaceContext.java:98) at org.apache。 xmlbeans.impl.values.NamespaceContext.push(NamespaceContext.java:106) at org.apache.xmlbeans.impl.values.XmlObjectBase.check_dated(XmlObjectBase.java:1273) at org.apache.xmlbeans.impl.values。 JavaStringEnumerationHolderEx.enumValue( JavaStringEnumerationHolderEx.java:60) at org.apache.xmlbeans.impl.values.XmlObjectBase.getEnumValue(XmlObjectBase.java:1514) at org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTCellFormulaImpl.getT(Unknown Source ) at org.apache.poi.xssf.usermodel.XSSFSheet.onReadCell(XSSFSheet.java:2624) at org.apache.poi.xssf.usermodel.XSSFRow。(XSSFRow.java:72) at org.apache。 poi.xssf.usermodel.XSSFSheet.initRows(XSSFSheet.java:178) at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:142) at org.apache.poi.xssf.usermodel。 XSSFSheet.onDocumentRead(XSSFSheet.java:129) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:269) at org.apache.poi.POIXMLDocument.load(POIX MLDocument.java:159) at org.apache.poi.xssf.usermodel.XSSFWorkbook。(XSSFWorkbook.java:190) at com.UploadData.doPost(UploadData.java:91) at javax.servlet.http.HttpServlet 。服务(HttpServlet.java:637) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在有机.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve。的java:127) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在org.apache。 catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process( Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) 线程异常“ContainerBackgroundProcessor [ StandardEngine [Catalina]]“java.lang。OutOfMemoryError:Java堆空间

+0

乍一看,你试图打开“文件名”,你说“tempdoc.xlsm”是你在找什么。无论如何,请提供堆栈跟踪和/或有关正在发生的错误的更多详细信息,社区将更好地配备您的问题。 – tschaible

+0

对不起tempdoc.xlsm是文件名和“文件名”包含文件的路径我选择我这样做它String fileName = request.getParameter(“file”);其中文件是由我的JSP传递给包含选定的文件路径的Java Servlet的参数... 文我试着用上面的方法,我只是得到以下消息捕获的IO异常java.io.FileNotFoundException:fileName(The系统找不到指定的文件) –

回答

0

您正在使用字符串文字“fileName”而不是变量fileName。

尝试

wb = new XSSFWorkbook(new FileInputStream(fileName)); 

注意周围没有文件名引号。

+0

您好我编辑了堆栈跟踪的问题后,上述更改u指定 –

+0

尝试打开的文件可能太大,您的JVM分配的内存。通读这个问题,http://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error-64mb-heap并调整堆的最大尺寸到更合适的尺寸。 – tschaible

+0

谢谢@tschaibla现在它工作正常 –