Problème lecture Cellule Excel (Saut de ligne) ADO composant

spadus Messages postés 4 Date d'inscription samedi 5 février 2011 Statut Membre Dernière intervention 11 mars 2011 - 2 mars 2011 à 22:03
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 22 mars 2011 à 07:30
Bonjour à tous :-)


je développe actuellement un soft permettant de consulter un fichier excel, celui-ci comporte les compo suivant (Adotable, Adoconnection, datasource).

tout fonctionne relativement bien pour la lecture des cellules, sauf pour celles qui comporte un saut de ligne (ALT+ENTREE).

La valeur retourné par adotable1.findfield('Cellule 1').Asstring est Nulle.

Avez vous une solution ?

Merci d'avance pour votre aide.

Bonne soirée :-)

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 mars 2011 à 15:42
Bonjour,

tu peux peut-être effacer les retours chariots ou ne pas les prendre en compte ?

cantador
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
3 mars 2011 à 23:00
Bonsoir

Et avec adotable1.findfield('Cellule 1').Value ?

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
spadus Messages postés 4 Date d'inscription samedi 5 février 2011 Statut Membre Dernière intervention 11 mars 2011
6 mars 2011 à 18:58
Merci pour vos réponses cantador et whitehippo

Malheureusement en accédant a adotable1.findfield('Cellule 1').Value celle-ci fonctionne pour une chaine de caractère simple, mais par contre lorsque le contenu de la cellule a un saut de ligne j'ai l' exception suivante : Evarianttypecasterror avec le message 'Impossible de convertir le variant de type (Null) en (Olestr).


je ne sais pas si il y a possiblité au composant adotable d'ignorer le saut de ligne.

Merci d'avance pour vos futures réponses.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 mars 2011 à 12:18
adotable1.findfield('Cellule 1').Text;

ça donne quoi ?


cantador
0

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

Posez votre question
spadus Messages postés 4 Date d'inscription samedi 5 février 2011 Statut Membre Dernière intervention 11 mars 2011
7 mars 2011 à 21:03
cantador.


même soucis, il me retourne un string vide.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 mars 2011 à 09:13
et sans retour chariot

adotable1.findfield('Cellule 1').Text;

te renvoie une valeur ?

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 mars 2011 à 11:57
utilises-tu une liaison OLE pour accéder
à la feuille de calcul EXCEL ?


cantador
0
spadus Messages postés 4 Date d'inscription samedi 5 février 2011 Statut Membre Dernière intervention 11 mars 2011
11 mars 2011 à 08:04
Merci tout d'abord cantador de t'interessé a mon problème

J'utilise le jeux de composant suivant

ADOconnection
ADOtable
Datasource

voici les paramètres de connection de mon ADOconnection

[i]with ADOConnection do
begin
Provider:='MSDASQL.1;'; //
ConnectionObject.Properties['Data Source'].Value:='Fichiers Excel';
// ConnectionObject.Properties['Extended Properties'].Value:='"DSN=Fichiers Excel"';
// ConnectionObject.Properties['Mode'].Value:='Mode=Read'; // ;Mode=Read ;Mode=Read ... ;Readonly=0; adModeReadWrite
s1 := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=Fichiers Excel;Extended Properties="DSN=Fichiers Excel";DBQ=';
s2 := ';DefaultDir=D:\Projets_2007\Cellule de gestion;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;"';
s := s1 + chemin_fichier_excel + s2 ;
ADOConnection.ConnectionString := s;
end;/i
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
17 mars 2011 à 00:53
Bonsoir

J'ai testé avec excel 2003 (classeur avec une seule feuille dont la première cellule contient la valeur "Cellule 1" et celle en dessous une chaine quelconque avec un saut de ligne), et les mêmes composants que toi plus un DBGrid histoire de...

Voici le mini code, vite fait mal fait , utilisé pour le test :

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;'
                                  +  'Persist Security Info=False;'
                                  +  'Data Source=Fichiers Excel;'
                                  +  'Initial Catalog=c:\temp\classeur1.xls'
                                  ;
  ADOConnection1.LoginPrompt := False ;
  ADOConnection1.Connected := TRUE ;  

  ADOTable1.Connection := ADOConnection1 ;
  ADOTable1.TableName := '[Feuil1$A1:B100]' ;
  ADOTable1.Active := TRUE ;

  DataSource1.DataSet := ADOTable1 ;

  DBGrid1.DataSource := DataSource1 ;

  caption := ADOTable1.findfield('Cellule 1').Asstring ;
end;


Je n'ai pas rencontré de problèmes pour récupérer le saut de ligne.
Celui-ci apparait comme un #$A en utilisant "adotable1.findfield('Cellule 1').Asstring".

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
22 mars 2011 à 07:30
Bonjour

Spadus, as-tu trouvé d'où vient ton problème ?

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
Rejoignez-nous