Lire une cellule excel

Messages postés
17
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
15 novembre 2011
- - Dernière réponse : S1rK
Messages postés
17
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
15 novembre 2011
- 15 nov. 2011 à 09:48
Bonjour à tous,

Dans le but de me faire un petit widget me permettant de récupérer une donnée d'un fichier excel .xls, j'utilise OleDb pour naviguer dans ma table. J'arrive a afficher une colonne entière, mais je souhaite n'afficher qu'une cellule en particulier (ici la F28 par exemple..) voici mon code(pour une colonne ici, F en l'occurrence):

 
try
{
if(comboBox1.Text != string.Empty && textBox1.Text != string.Empty)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties="Excel 8.0";";
OleDbConnection connection = new OleDbConnection(connectionString);
string cmdText = "SELECT * FROM [Synthèse$]";
 
OleDbCommand command = new OleDbCommand(cmdText, connection);
 
command.Connection.Open();
OleDbDataReader reader = command.ExecuteReader();
 
if (reader.HasRows)
{
MessageBox.Show("Upload OK!");
 
    while (reader.Read())
    {
    	listBox1.Items.Add(reader[6].ToString());
        //listBox1.Items.Add("{0}\t{1}", reader[0].ToString(), reader[1].ToString());
    }
}

J'aimerai éviter de passer par un dataSet (vu que je suis clairement pas à l'aise et surtout novice) malgré tout ici je me "casse la tête" sur la manière de faire pour lire dans une cellule bien précise.. d'avance merci pour toute aide!
Afficher la suite 

5 réponses

Messages postés
14046
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
324
0
Merci
Bonsoir

Va voir là, c'est pas avec oledb mais ça marche.


Whismeril
Commenter la réponse de Whismeril
Messages postés
17
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
15 novembre 2011
1
0
Merci
Bonjour,

Merci de ta réponse je vais regarder ta class de plus prés.

Malgré tout j'aurai aimer rester avec OleDb même si je me doute qu'il y a d'autres méthodes
Commenter la réponse de S1rK
Messages postés
17
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
15 novembre 2011
1
0
Merci
J'ai regardé ta class ce matin vraiment sympa, mais je n'arrive pas a lire des entiers/formules/décimal/caractéres spéciaux etc.. alors qu'avec Oledb j'arrive a importer mes colonnes quelque soit le type d'informations saisie dans les cellules.

Au final, mon seul souci reste celui-ci: Comment puis-je juste.. non pas avoir la colonne entière de mon dataReader, mais bien une seule ligne en particulier dans cette colonne.

Merci (:
Commenter la réponse de S1rK
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
17
0
Merci
Salut, il suffit de passer par un Adapter.
Tu peux utiliser le nom des colonnes dans le excel sinon utiliser les noms par défaut F1,F2, ect...

Rajouter HDR=YES dans la chaine de connexion (connectionString) pour avoir le vrai nom des colonnes

puis remplir un dataTable :

DataTable dtResult = new DataTable("Synthèse");

string cmdText = "SELECT * FROM [Synthèse$]";

OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmdText, connection);

myDataAdapter.Fill(dtResult);

// Par ex, récup la cellule F3 de la ligne 2
dtResult.Rows[1]["F3"].ToString();

// La dataTable est lecture/Ecriture
// il suffit de mettre dtResult.AccepChange()
// apres une modif
Commenter la réponse de yann_lo_san
Messages postés
17
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
15 novembre 2011
1
0
Merci
Salut,

Merci de ta réponse c'est exactement ce que je cherchais, malgré tout j'ai finalement trouvé qu'au niveau de mon select il était possible de choisir ma cellule

string cmdText = "SELECT * FROM F47:Q48"; //"SELECT * FROM [Synthèse$]";


Pour la cellule F28 dans cet exemple. C'est pas très clair pour moi ces "coordonnées" ... mais bon j'ai ce que je voulais au final et encore une fois merci de votre aide (:
Commenter la réponse de S1rK