Lire une cellule excel

S1rK Messages postés 17 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 15 novembre 2011 - 11 nov. 2011 à 19:20
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!

5 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
12 nov. 2011 à 22:24
Bonsoir

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


Whismeril
0
S1rK Messages postés 17 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 15 novembre 2011 4
14 nov. 2011 à 09:29
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
0
S1rK Messages postés 17 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 15 novembre 2011 4
14 nov. 2011 à 12:18
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 (:
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
14 nov. 2011 à 14:38
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
S1rK Messages postés 17 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 15 novembre 2011 4
15 nov. 2011 à 09:48
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 (:
0
Rejoignez-nous