2010-09-15 15 views
1

J'ai créé un programme dans lequel je lis un ensemble d'enregistrements de la base de données, puis je l'enregistre dans un DataGrid. De là, je fais que l'utilisateur télécharge le fichier en tant que fichier Excel.Erreur lors de la lecture d'un fichier .xls excel téléchargé dans asp.net

Maintenant, l'utilisateur apporte des modifications au fichier, puis le télécharge à nouveau et à partir de là, je lis le fichier .xls téléchargé et apporte les modifications nécessaires dans le DB.

Le problème est que lorsque l'utilisateur télécharge le fichier Excel mis à jour, je ne peux pas y accéder et obtenir une erreur.

Table externe n'est pas dans le prévu le format

Je fais l'utilisateur télécharger le fichier en tant que

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      // first let's clean up the response.object 
      response.Clear(); 
      response.Charset = ""; 
      // set the response mime type for excel 
      response.ContentType = "application/vnd.ms-excel"; 
      response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 
      // create a string writer 
      using (System.IO.StringWriter sw = new System.IO.StringWriter()) 
      { 
       using (System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw)) 
       { 
        // instantiate a datagrid 
        System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid(); 
        dg.DataSource = dt; 
        dg.DataBind(); 
        dg.RenderControl(htw); 
        response.Write(sw.ToString()); 
        response.End(); 
       } 
      } 

L'utilisateur télécharger le fichier après avoir modifié et je lis comme

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
       "Data Source=" + path + "\\" + FileUpload1.FileName + ";Extended Properties=Excel 8.0;"; 
        OleDbConnection oledbConn = new OleDbConnection(connString); 

        oledbConn.Open(); 

        OleDbCommand cmd = new OleDbCommand("SELECT * FROM [$Sheet1 ", oledbConn); 
        OleDbDataAdapter oleda = new OleDbDataAdapter(); 
        oleda.SelectCommand = cmd; 

        DataSet ds = new DataSet(); 

        oleda.Fill(ds, "Employees"); 

Veuillez nous aider. Merci.

Répondre

0

Est-il possible que la version du fichier XLS que vous générez ne puisse pas être lue par OLEDB? Excel 8 est Excel 97 et vous générerez probablement un format Excel 2007 .xlsx.