2012-12-17 31 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現在它工作正常 –