使用apache POI读取.xlsm文件时出错

时间:2012-12-17 04:56:04

标签: apache-poi xssf

当我执行以下行时,我正在尝试读取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堆空间

1 个答案:

答案 0 :(得分:0)

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

尝试

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

请注意,fileName周围缺少引号。

相关问题