-2

我正在尝试读取 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(系统找不到指定的文件)

任何人都可以帮我解决它...

但现在我得到了以下异常,这是堆栈跟踪,如下所示

严重:Servlet UploadData 的 Servlet.service() 抛出异常 java.lang.OutOfMemoryError: Java heap space 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) 在 org.apache.xmlbeans.impl.values.XmlObjectBase.check_dated(XmlObjectBase.java:1273) 在 org.apache.xmlbeans.impl.values.JavaStringEnumerationHolderEx.enumValue(JavaStringEnumerationHolderEx.java:60) 在org.openxmlformats.schemas 中的 org.apache.xmlbeans.impl.values.XmlObjectBase.getEnumValue(XmlObjectBase.java:1514)。org.apache.poi.xssf.usermodel.XSSFSheet.onReadCell(XSSFSheet.java:2624) 上的电子表格ml.x2006.main.impl.CTCellFormulaImpl.getT(未知来源)。 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) 在 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) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org. 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) 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 堆空间

4

1 回答 1

0

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

尝试

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

请注意,文件名周围缺少引号。

于 2012-12-17T06:28:18.900 回答