10 votes

OLEDB ne renvoie pas la première ligne du fichier Excel

J'utilise Microsoft.ACE.OLEDB.12.0 pour me connecter à un fichier Microsoft Excel et en extraire des données. J'écris mes codes en langage C# en utilisant Visual Studio 2012. Voici mon code :

public DataTable getData(string fileName, string sheetName)
{
    connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" 
                      + fileName
                      + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'";

    errorCode = ErrorDefinition.ERROR_NOERROR;
    errorMessage = "";
    DataTable dt = new DataTable();            
    try
    {
            string query = "SELECT * FROM [" + sheetName + "]";
            OleDbConnection con = new OleDbConnection(connectionString);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, con);
            dataAdapter.Fill(dt);
    }
    catch (Exception exp)
    {
            errorCode = ErrorDefinition.ERROR_OLEDBERROR;
            errorMessage = exp.Message;
    }
    return dt;
}

Le problème est que dt ne contient pas la première ligne de la feuille spécifiée dans le fichier. Quel est le problème ?

22voto

Steve Points 96477

Dans votre chaîne de connexion, vous utilisez le paramètre "HDR=YES" Cela signifie que la première ligne de votre fichier Excel est traitée par OleDb comme la ligne contenant les noms de champs de la table représentée par la feuille courante.

Utilisation de "HDR=NO" indique à OleDb que la première ligne contient des données et les noms des colonnes sont automatiquement nommés, en progression. comme "F1", "F2", "F3" etc....

3voto

yogi Points 6950

Essayez HDR=NO dans la chaîne de connexion

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X