ERROR while executing bellow code:java.io.IOException: Invalid header signature; read 576460838270094160, expected -2226271756974174256
<%@page import="java.io.*"%> <%@page import="java.util.*"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%> <table border="1"> <% short a=0; short b=1; short c=2; short d=3; int i=0; String value1="", value2="",value3=" ", value4=""; String filename ="C:/hello.xls"; if (filename != null && !filename.equals("")) { try{ FileInputStream fs =new FileInputStream(filename); HSSFWorkbook wb = new HSSFWorkbook(fs); for (int k = 0; k < wb.getNumberOfSheets(); k++){ int j=i+1; HSSFSheet sheet = wb.getSheetAt(k); int rows = sheet.getPhysicalNumberOfRows(); for (int r = 0; r < rows; r++){ HSSFRow row = sheet.getRow(r); int cells = row.getPhysicalNumberOfCells(); out.write("<br>"); HSSFCell cell1 = row.getCell(a); value1 = cell1.getStringCellValue(); HSSFCell cell2 = row.getCell(b); value2 = cell2.getStringCellValue(); HSSFCell cell3 = row.getCell(c); value3 = cell3.getStringCellValue(); HSSFCell cell4 = row.getCell(d); value4 = cell4.getStringCellValue(); %> <tr><td><%=value1%></td><td><%=value2%></td><td><%=value3%></td><td><%=value4%></td></tr> <% } i++; } } catch(Exception e){ System.out.println(e); } } %> </table>
can anyone help me what is the solution for this.
Do you have hello.xls in your c: drive?If not then create it.Anyways do you have POI library in the lib folder of your apache tomcat?
Here is the code:
<%@page import="java.io.*"%> <%@page import="java.util.*"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%> <table border="1"> <% short a=0; short b=1; short c=2; short d=3; int i=0; String value1="", value2="",value3=" ", value4=""; String filename ="C:/hello.xls"; if (filename != null && !filename.equals("")) { try{ FileInputStream fs =new FileInputStream(filename); HSSFWorkbook wb = new HSSFWorkbook(fs); for (int k = 0; k < wb.getNumberOfSheets(); k++){ int j=i+1; HSSFSheet sheet = wb.getSheetAt(k); int rows = sheet.getPhysicalNumberOfRows(); for (int r = 0; r < rows; r++){ HSSFRow row = sheet.getRow(r); int cells = row.getPhysicalNumberOfCells(); out.write("<br>"); HSSFCell cell1 = row.getCell(a); value1 = cell1.getStringCellValue(); HSSFCell cell2 = row.getCell(b); value2 = cell2.getStringCellValue(); HSSFCell cell3 = row.getCell(c); value3 = cell3.getStringCellValue(); HSSFCell cell4 = row.getCell(d); value4 = cell4.getStringCellValue(); %> <tr><td><%=value1%></td><td><%=value2%></td><td><%=value3%></td><td><%=value4%></td></tr> <% } i++; } } catch(Exception e){ System.out.println(e); } } %> </table>
Hi, hello.xls and POI library files are there in respective folders. the printStackTrce() method shows the following Error message on console. ---------- java.io.IOException: Invalid header signature; read 576460838270094160, expected -2226271756974174256 at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:88) at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:83) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:230) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:211) at org.apache.jsp.AdminSaaS.excelreading_jsp._jspService(excelreading_jsp.java:71) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
Your .xls is not a proper xls file. It's a text file with a .xls extension s.t. Excel can quietly convert it and display as a spreadsheet. HSSF deals with files written in Excel format only. I know the cause but donno the solution.
Thanks.