2011-06-14 3 views
0

J'ai un fichier xls que je voudrais lire en utilisant C# et remplir les informations dans un tableau de données. Le code J'utilise est:Principaux problèmes de travail avec XLS dans C# .net 4.0

public static DataTable GetExcelData(string excelFilePath) 
{ 
    OleDbConnection objConn = null; 
    string oledbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFilePath + ";Extended Properties=Excel 10.0;"; 
    objConn = new OleDbConnection(oledbConnectionString); 

    if (objConn.State == ConnectionState.Closed) 
    { 
     objConn.Open(); 
    } 
    var objCmdSelect = new OleDbCommand("Select * from [Sheet1$]", objConn); 
    var objAdapter = new OleDbDataAdapter(); 
    objAdapter.SelectCommand = objCmdSelect; 
    var objDataset = new DataSet(); 
    objAdapter.Fill(objDataset, "ExcelDataTable"); 
    objConn.Close(); 
    return objDataset.Tables[0]; 
} 

Une fois ce tableau de données est remplie, je dois enlever les 5 premiers ou si les lignes qui contiennent des informations d'en-tête et boucle à travers la table de données peuplant une table de base de données d'accès. Je n'ai eu aucune chance avec ceci ou l'un des 10 000 autres moyens suggérés. Est-ce que quelqu'un a des informations qui peuvent m'aider. Je cours VS2010. Net 4.0 cadre. Toute aide serait super appréciée.

Merci, John

+0

Vous pouvez le faire à la dure ou la manière facile. La façon la plus difficile est certainement de supposer qu'une feuille de calcul ressemble à une base de données. Ou vous pouvez simplement utiliser les classes dans l'espace de noms Microsoft.Office.Interop.Excel. –

+0

la feuille de calcul sera toujours dans le même format. Le processus que je cherche est le suivant: 1. lire la feuille de calcul dans une sorte de table temporaire, puis placer cette donnée dans un db d'accès. Le mappage des champs est simple, tout ce que je cherche à comprendre est comment lire la feuille de calcul dans un tableau de données, couper les lignes du tableau de données avec les informations dont je n'ai pas besoin puis écrire les données du tableau dans un table d'accès avec des champs du même nom. Je pense que ça ne peut pas être si difficile, mais je n'ai pas du tout eu de chance avec n'importe quelle méthode mentionnée. – SSISPissesMeOff

Répondre

1

J'ai eu beaucoup de mal à essayer d'obtenir des données Excel dans un DataTable en utilisant OLEDB. J'ai finalement résolu le problème en passant à une solution qui utilise Excel Interop. S'il vous plaît voir cette réponse pour de plus amples explications et des exemples de code:

Importing from Excel: some cells become null