当我执行以下行时,我正在尝试读取tempdoc.xlsm文件时出现IO错误
String fileName = request.getParameter("file");
XSSFWorkbook wb = new XSSFWorkbook();
wb = new XSSFWorkbook(new FileInputStream(fileName)); //error wen executing this line
当我尝试使用上面的方法时,我只是在捕获IO异常时收到以下消息java.io.FileNotFoundException:fileName(系统找不到指定的文件)
任何人都可以帮助我...
但是现在我得到了跟随例外,这就是堆栈跟踪,如下所示
SEVERE:servlet的Servlet.service()上传了异常 java.lang.OutOfMemoryError:Java堆空间 at org.apache.xmlbeans.impl.values.NamespaceContext $ NamespaceContextStack。(NamespaceContext.java:78) 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) 在org.apache.poi.xssf.usermodel.XSSFSheet.onReadCell(XSSFSheet.java:2624) 在org.apache.poi.xssf.usermodel.XSSFRow。(XSSFRow.java:72) 在org.apache.poi.xssf.usermodel.XSSFSheet.initRows(XSSFSheet.java:178) 在org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:142) 在org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:129) 在org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:269) 在org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159) 在org.apache.poi.xssf.usermodel.XSSFWorkbook。(XSSFWorkbook.java:190) at com.UploadData.doPost(UploadData.java:91) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at 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) 在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588) 在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) 在java.lang.Thread.run(未知来源) 线程“ContainerBackgroundProcessor [StandardEngine [Catalina]]”中的异常java.lang.OutOfMemoryError:Java堆空间
答案 0 :(得分:0)
您使用的是字符串文字“fileName”而不是变量fileName。
尝试
wb = new XSSFWorkbook(new FileInputStream(fileName));
请注意,fileName周围缺少引号。