Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction poi avec un NullPointerE

Sujet résolu
    27 janvier 2012 à 9:41:48

    Bonjour à tous,

    J'ai un souci avec mon code jsp car j'obtiens cette erreur ci:
    rg.apache.jasper.JasperException: An exception occurred processing JSP page /readExcel.jsp at line 65
     
    62:              
    63:                   //test pour eviter de lire les entetes
    64:                   if(n!=0){
    65:                           recu = <couleur nom="rouge">row.getCell(8).getStringCellValue();</couleur>
    66:                       expedie = row.getCell(9).getStringCellValue();
    67:                      
    68:                  
     
     
    Stacktrace:
            org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
            org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
            org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
            org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
     
    cause mère
     
    java.lang.NullPointerException
            org.apache.jsp.readExcel_jsp._jspService(readExcel_jsp.java:142)
            org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
            org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
            org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


    Ce qui pose problème c'est la ligne en rouge!

    J'ai besoin de faire ceci:row.getCell(8).getStringCellValue(); pour récupérer la ligne de ma cellule.

    Voici ma jsp entière pour info:
    <%@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"%>
    <%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem" %>
    <%@page import="java.io.FileInputStream"%>
    <%@page import="java.io.FileNotFoundException"%>
    <%@page import="java.io.IOException"%>
    <%@page import="java.text.DateFormat"%>
    <%@page import="java.text.ParseException"%>
    <%@page import="java.text.SimpleDateFormat"%>
    <%@page import="java.util.Calendar"%>
    <%@page import="java.util.Iterator"%>
    <html><head><title>Extraction du Fichier Excel</title>
    <link rel="stylesheet" type="text/css" href="style_de_base.css" media="screen">
    </head>
    <body>
    <center><h3>Extraction IETD</h3>
    <br>
    </center>
    
    <form>
    <% 
    String type_dossier;
    String ref_presta;
    String code_action;
    long N_BP_Symphonie;
    String Indice_Carat;
    String lib_offre;
    String entite;
    String televendeur;
    String recu = "04/01/2012";
    String expedie ="";
    String date_npai;
    String anomalie;
    Calendar cal1=Calendar.getInstance();
    Calendar cal2=Calendar.getInstance();%><%
    	   
    	try{
    		POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("C:/IETD_export.xls"));
    		//FileInputStream fs =new FileInputStream("C:/IETD_export.xls");
    	      HSSFWorkbook wb = new HSSFWorkbook(fs);
    	      HSSFSheet sheet = wb.getSheetAt(0);
    	      HSSFRow row = null;
    	      HSSFCell cell = null;
    	      int numLigne = 1;
    	      int n;
    	      int num;
    	      DateFormat formatter ; 
    	      java.util.Date dat1 ; 
    	      java.util.Date dat2 ; 
    	      formatter = new SimpleDateFormat("dd/MM/yyyy");
    	      for (Iterator rowIt = sheet.rowIterator(); rowIt.hasNext();){
    	          //totalLigne = 0;
    	          row = (HSSFRow)rowIt.next();
    	          //nbre total de ligne
    	          n = row.getRowNum();
    	          //
    	          //
    	     
    	          //test pour eviter de lire les entetes
    	          if(n!=0 && n!=2690){
    	        	  if(row.getCell(8).getStringCellValue()!=""){
    	         		 recu = row.getCell(8).getStringCellValue();
    	 	              expedie = row.getCell(9).getStringCellValue(); 
    	         		 
    	 	        	  }else{
    	 	        		  recu="03/01/2012";
    	 		        	  expedie="03/01/2012";
    	 		        	  //System.out.println("ezlijfdoiezjdloezkdokdzekdpzekdpoezkdpoekdpoezkdpoezkdpoek"+recu+expedie);
    	 	        	  }
    	         
    	          //test pour eviter que l'une des dates soit vides et avoir un parse error de la date
    	          if(recu!="" && expedie!=""){
    	        	  
    	          dat1 = formatter.parse(recu);
    	          dat2 = formatter.parse(expedie);
    	          cal1.setTime(dat1);
    	          cal2.setTime(dat2);
    	          //System.out.println("-----"+cal1.toString());
    	          
    	          int jours = 0;
    	          while (cal1.before(cal2)){
    	           cal1.add(Calendar.DAY_OF_MONTH,1);
    	           jours++;
    	          }
    	          
    	          //TEST
    	          if(jours>2){
    	          	//System.out.println(jours+" jours");
    	          	%>
    	          	<input type="text" name="jours" value="<%=jours%>">
    	          		<%
    	          	num=row.getRowNum();
    	          	num++;
    	          	//System.out.println("n° de la ligne : "+num);
    	          	%>
    	          	<input type="text" name="nligne" value="<%=num%>">
    	          		<%
    	              //System.out.println("Today is " +dat1 );
    	          	//System.out.println("ON AFFICHE LA LIGNE !!!");
    	          	%>
    	          	<table>
    	          	<tr><td>type_dossier</td><td>référence prestataire</td><td>code action</td><td>N_BP_Symphonie</td><td>Indice_Carat</td><td>lib_offre</td><td>entite</td>
    	          	<td>televendeur</td><td>recu</td><td>expedie</td><td>date_npai</td><td>anomalie</td></tr>
    	          	
    	          		<%
    	          	//System.out.println("type_dossier|référence prestataire|code action      |N_BP_Symphonie     " +
    	          			//"|Indice_Carat|lib_offre|entite|televendeur|recu|expedie|date_npai|anomalie");
    	          	
    	          	type_dossier = row.getCell(0).getStringCellValue();
    	          	ref_presta = row.getCell(1).getStringCellValue();
    	          	code_action = row.getCell(2).getStringCellValue();
    	          	N_BP_Symphonie = (long) row.getCell(3).getNumericCellValue();
    	          	Indice_Carat = row.getCell(4).getStringCellValue();
    	          	lib_offre = row.getCell(5).getStringCellValue();
    	          	entite = row.getCell(6).getStringCellValue();
    	          	televendeur = row.getCell(7).getStringCellValue();
    	          	//
    	          	date_npai = row.getCell(10).getStringCellValue();
    	          	anomalie = row.getCell(11).getStringCellValue();
    	          	%>
    	          	<tr><td><%=type_dossier %></td><td><%=ref_presta %></td><td><%=code_action %></td><td><%=N_BP_Symphonie %></td><td><%=Indice_Carat %></td><td><%=lib_offre %></td><td><%=entite %></td>
    	          	<td><%=televendeur %></td><td><%=recu %></td><td><%=expedie %></td><td><%=date_npai %></td><td><%=anomalie %></td></tr>
    	          	</table>
    	          	<%
    	              //System.out.println(type_dossier+"          "+ref_presta+"       "+code_action+"         "+N_BP_Symphonie+"        "+Indice_Carat+"                   "+lib_offre+"    "+entite+"  "+televendeur+"  "+recu+"  "+expedie+"   "+"   "+date_npai+"  "+"   "+anomalie);	
    	          }
    	          
    	          for (Iterator cellIt = row.cellIterator(); cellIt.hasNext();) {
    	          	cell = (HSSFCell) cellIt.next();
    	          	//System.out.println("ligne n° "+cell.getRowIndex());//avoir le numéro de ligne
    	          	break;
    	          }
    	          //System.out.println("total ligne "+numLigne+" = "+totalLigne);
    	          //totalGeneral += totalLigne;
    	          numLigne++;
    	        }
    	        //System.out.println("total general "+totalGeneral);
    	        //System.out.println("fini");
    	        //System.out.println("Nbre de ligne lue: "+numLigne);
    	        }
    	        }
    	      
    	      } catch (FileNotFoundException e) {
    	        e.printStackTrace();
    	      } catch (IOException e) {
    	        e.printStackTrace();
    	      }
    	      
    %>
    </form>
    </body></html>
    


    Elle extrait les informations d'un fichier excel vers ma jsp sous forme de tableau.
    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2012 à 10:27:37

      Salut pour quoi tu ne fait pas :
      if(n!=0 && row.getCell(8)!=null){
      ...
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2012 à 20:01:11

        Oh mon dieu, un traitement POI directement dans une JSP, mes yeux saignent !

        Si tu as la moindre ligne de Java dans une JSP en 2012, c'est que tu as un problème.
        • Partager sur Facebook
        • Partager sur Twitter
          14 février 2012 à 13:25:13

          ah ouai !!!
          Mais comment tu ferais alors ??
          Je vois pas d'autres solution en faite.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            14 février 2012 à 13:40:30

            Citation : mouche92

            ah ouai !!!
            Mais comment tu ferais alors ??
            Je vois pas d'autres solution en faite.



            servlet -> classes java
            • Partager sur Facebook
            • Partager sur Twitter
              14 février 2012 à 17:04:38

              Citation : mouche92

              ah ouai !!!
              Mais comment tu ferais alors ??
              Je vois pas d'autres solution en faite.



              Je t'ai donné une approche dans l'autre topic que tu as créé. Tu m'as répondu "c'est faisable comme ça"...
              • Partager sur Facebook
              • Partager sur Twitter
                14 février 2012 à 18:30:23

                Je t'ai répondu. je ferme celui.
                • Partager sur Facebook
                • Partager sur Twitter

                fonction poi avec un NullPointerE

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown