2009-12-21 6 views
1

j'ai ce code:pas toutes les données insérer dans convert de Excell à la base de données

ConnectString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=No\""; 
     SheetName = SheetName.Substring(0, SheetName.Length - 5); 
     OleDbConnection Connection = new OleDbConnection(); 
     Connection.ConnectionString = ConnectString; 
     try {Connection.Open();} 
     catch (Exception EX) 
     { 
      MessageBox.Show(EX.Message); 
     } 
     OleDbDataAdapter Command = new OleDbDataAdapter("SELECT * FROM [" + SheetName + "$]", Connection); 
     DataSet ExcelData = new DataSet(); 
     try {Command.Fill(ExcelData);} 
     catch (Exception EX) 
     { 
      MessageBox.Show(EX.Message); 
     } 
     finally 
     { 
      if (Connection.State != ConnectionState.Closed) 
       Connection.Close(); 
     } 

mais pas toutes les données dans la colonne 1 insérer - je reçois des données vides pourquoi? qu'est-ce qui peut être mauvais?

remercient à l'avance

Répondre

1

Lors de l'importation à partir d'Excel, pour les types de données sont des colonnes par défaut Deviné en fonction du contenu des huit premières lignes. Si les valeurs sont vides dans les 8 premières lignes pour une colonne donnée, cela peut entraîner l'absence totale de données pour la colonne. Cela peut être remplacé dans le registre. Je suggère d'étudier cette possibilité. Voici un bon résumé.

http://blog.lab49.com/archives/196

+0

oui !!! si je trier de la grande à la petite valeur cela fonctionne excellent mais comment je peux le faire sans tri? – Gold

+0

mettre à jour la clé de Registre comme décrit dans ce message. Cela forcera le fournisseur à lire l'ensemble du fichier avant d'affecter des types de données, de sorte qu'il pourrait y avoir un problème de performance si vous traitez des fichiers très volumineux. – cmsjr

+0

Je mets à jour la clé de registre - mais ne fonctionne toujours pas. peut-être parce que j'ai Windows 7 ?? – Gold

Questions connexes