La référence d'objet n'est pas définie à une instance d'un objet

il me dit que le problème est la ;

string file = "~/Fichier" + Session["sb"].ToString() + "_" + Session["salle"].ToString() + ".pdf";

et aussi :
La référence d'objet n'est pas définie à une instance d'un objet

ps : je veux exporter les données vers un fichier PDF

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour
    La politesse n'est pas en option ici.
    Et quelle est ta question?
    Bon, je la devine, et voilà la réponse:
    soit
    Session["sb"]
    soit
    Session["salle"]
    soit
    Session
    lui-même vaut null. Il faut que tu fasses les vérifications nécessaires (blocs de
    if
    ) pour gérer les cas où il manque un des objets que tu veux.
    Pourquoi cela arrive? Impossible de le dire sans plus de détails sur ton code, particulièrement la/les bibliothèque(s) utilisée.
    1. using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.UI;
      using System.Web.UI.WebControls;
      using System.Data.OleDb;

      using System.IO;
      using System.Web.UI.HtmlControls;
      using iTextSharp.text;
      using iTextSharp.text.pdf;
      using iTextSharp.text.html.simpleparser;

      namespace seanse7
      {
      public partial class candidat_par_salle : System.Web.UI.Page
      {
      protected void Page_Load(object sender, EventArgs e)
      {

      }

      protected void Button1_Click(object sender, EventArgs e)
      {
      string file = "~/Fichier" + Session["sb"].ToString() + "_" + Session["salle"].ToString() + ".pdf";

      GridView1.AllowPaging = false;
      GridView1.DataBind();
      Document Docpdf = new Document();
      PdfWriter write = PdfWriter.GetInstance(Docpdf, new FileStream(Server.MapPath(file), FileMode.OpenOrCreate));
      Docpdf.Open();

      BaseFont BfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
      Font titleFont = new Font(BfTimes, 13f, Font.BOLD, BaseColor.BLACK);
      Font headerFont = new Font(BfTimes, 10f, Font.BOLD, BaseColor.BLACK);
      Font cellFont = new Font(BfTimes, 10f, Font.NORMAL, BaseColor.BLACK);

      Docpdf.Add(new Paragraph("Serie :" +Session["sb"].ToString() +System.Environment.NewLine +"Salle :" + Session["salle"].ToString() +System.Environment.NewLine + "Liste de candidats ",titleFont));

      int nbre_colonnes = GridView1.Columns.Count;
      int nbre_lignes = GridView1.Rows.Count;

      PdfPTable table = new PdfPTable(nbre_colonnes);
      table.SpacingBefore = 20; table.SpacingAfter = 20; table.WidthPercentage = 50;

      for(int j = 0 ; j < nbre_colonnes;j++)
      table.AddCell(new Phrase(GridView1.Columns[j].HeaderText, headerFont));

      for(int i = 0 ; i < nbre_lignes; i++)
      {
      for(int k = 0 ; k < nbre_colonnes ; k++)
      {
      string Valeur = GridView1.Rows[i].Cells[k].Text;
      if (Valeur != null)
      {
      table.AddCell(new Phrase(Valeur, cellFont));
      }

      }

      }

      Docpdf.Add(table);
      Docpdf.Close();
      GridView1.AllowPaging = true;
      GridView1.DataBind();
      }
      }
      }

      voila tout le code de la partie export vers un fichier pdf !!
      j'ai pas compris (blocs if) !!?
      et merci pour m'avoir répondu
    2. Contributeur
      @younes-ziTa classe est une classe partielle; il manque du code.
      Et quand je dit "blocs de if", je voulais dire que de manière similaire à ton
      if (Valeur != null) 
      , tu dois faire les vérifs nécessaires pour éviter qu'une des valeurs que tu utilises pour
      file
      ne valent
      null
      .