Bonjour,
Je cherche, par programme php sur un serveur, à lire/écrire des données dans
un fichier Excel.
Après avoir réussi à me connecter et lire le nom des tables, la première
requête SQL génère un message d'erreur disant que la connexion est perdue!
Pour la connexion au fichier Excel j'utilise :
$conn = new COM("ADODB.Connection")or die("Cannot start ADO");
$dsn="Driver={Microsoft Excel Driver
(*.xls)};DriverId=790;DBQ=".$_SERVER['DOCUMENT_ROOT'].$dbname.";ReadOnly=0" ;
$conn->Open($dsn);
pour lire le nom des tables, j'utilise :
function ExcelTables() {
global $conn; // référence à la connexion ADO
$arr= array();
$adors=$conn->OpenSchema(20);//tables
if ($adors){
$f = $adors->Fields(2);//table/view name
while (!$adors->EOF){
$arr[]=$f->value;
$adors->MoveNext();
}
$adors->Close();
}
return $arr;
}
//---
et le code fautif :
foreach (ExcelTables() as $tabname){
if (eregi($reg,$tabname)){
$tabname=str_replace("'","",$tabname);
$sql ='SELECT * FROM [$tabname]';
$rs = $conn->Execute($sql);//ligne générant le message d'erreur suivant :
Warning: (null)(): Invoke() failed: Une exception s'est produite. Source:
Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][Pilote
ODBC Excel] La connexion permettant de visualiser votre feuille de calcul
Microsoft Excel liée est perdue
J'ai ajouté un filtre sur les noms de tables afin de ne tester que celles
qui m'intéressent. Petite curiosité, la deuxième feuille de calcul du
Workbook est lue en premier sous un nom feuillea$ et a un type System Table,
la première feuille de calcul est lue en second et a un type Table et
s'affiche avec un nom 'feuilleb$' entre guillemet simple quote!
j'ai ce message d'erreur même si je supprime la ligne :
$tabname=str_replace("'","",$tabname);
si je mets en clairle nom de la feuille dans la requête SQL,
$sql ="SELECT * FROM [feuilleb$];
ou bien
$sql ="SELECT * FROM ['feuilleb$'];
j'ai un message d'erreur disant que la feuille n'est pas trouvée!
Que veut dire ce message de perte de connexion à la feuille?
Merci pour tout eclaircissement.
Cordialement
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
smr78
Oups, 1000 excuses, mon fichier Excel était coincé! Même si je changeais le nom des feuilles, mon programme lisait le nom original! Tout fonctionne avec le filtre des simple quote sur le nom des feuilles.
Bonjour, Je cherche, par programme php sur un serveur, à lire/écrire des données dans un fichier Excel. Après avoir réussi à me connecter et lire le nom des tables, la première requête SQL génère un message d'erreur disant que la connexion est perdue! Pour la connexion au fichier Excel j'utilise : $conn = new COM("ADODB.Connection")or die("Cannot start ADO"); $dsn="Driver={Microsoft Excel Driver (*.xls)};DriverIdy0;DBQ=".$_SERVER['DOCUMENT_ROOT'].$dbname.";ReadOnly=0" ; $conn->Open($dsn);
pour lire le nom des tables, j'utilise :
function ExcelTables() { global $conn; // référence à la connexion ADO $arr= array(); $adors=$conn->OpenSchema(20);//tables if ($adors){ $f = $adors->Fields(2);//table/view name while (!$adors->EOF){ $arr[]=$f->value; $adors->MoveNext(); } $adors->Close(); } return $arr; } //---
et le code fautif :
foreach (ExcelTables() as $tabname){ if (eregi($reg,$tabname)){ $tabname=str_replace("'","",$tabname); $sql ='SELECT * FROM [$tabname]'; $rs = $conn->Execute($sql);//ligne générant le message d'erreur suivant :
Warning: (null)(): Invoke() failed: Une exception s'est produite. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][Pilote ODBC Excel] La connexion permettant de visualiser votre feuille de calcul Microsoft Excel liée est perdue
J'ai ajouté un filtre sur les noms de tables afin de ne tester que celles qui m'intéressent. Petite curiosité, la deuxième feuille de calcul du Workbook est lue en premier sous un nom feuillea$ et a un type System Table, la première feuille de calcul est lue en second et a un type Table et s'affiche avec un nom 'feuilleb$' entre guillemet simple quote!
j'ai ce message d'erreur même si je supprime la ligne : $tabname=str_replace("'","",$tabname); si je mets en clairle nom de la feuille dans la requête SQL, $sql ="SELECT * FROM [feuilleb$]; ou bien $sql ="SELECT * FROM ['feuilleb$']; j'ai un message d'erreur disant que la feuille n'est pas trouvée!
Que veut dire ce message de perte de connexion à la feuille? Merci pour tout eclaircissement. Cordialement
Oups, 1000 excuses, mon fichier Excel était coincé! Même si je changeais le
nom des feuilles, mon programme lisait le nom original!
Tout fonctionne avec le filtre des simple quote sur le nom des feuilles.
Bonjour,
Je cherche, par programme php sur un serveur, à lire/écrire des données dans
un fichier Excel.
Après avoir réussi à me connecter et lire le nom des tables, la première
requête SQL génère un message d'erreur disant que la connexion est perdue!
Pour la connexion au fichier Excel j'utilise :
$conn = new COM("ADODB.Connection")or die("Cannot start ADO");
$dsn="Driver={Microsoft Excel Driver
(*.xls)};DriverIdy0;DBQ=".$_SERVER['DOCUMENT_ROOT'].$dbname.";ReadOnly=0" ;
$conn->Open($dsn);
pour lire le nom des tables, j'utilise :
function ExcelTables() {
global $conn; // référence à la connexion ADO
$arr= array();
$adors=$conn->OpenSchema(20);//tables
if ($adors){
$f = $adors->Fields(2);//table/view name
while (!$adors->EOF){
$arr[]=$f->value;
$adors->MoveNext();
}
$adors->Close();
}
return $arr;
}
//---
et le code fautif :
foreach (ExcelTables() as $tabname){
if (eregi($reg,$tabname)){
$tabname=str_replace("'","",$tabname);
$sql ='SELECT * FROM [$tabname]';
$rs = $conn->Execute($sql);//ligne générant le message d'erreur suivant :
Warning: (null)(): Invoke() failed: Une exception s'est produite. Source:
Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][Pilote
ODBC Excel] La connexion permettant de visualiser votre feuille de calcul
Microsoft Excel liée est perdue
J'ai ajouté un filtre sur les noms de tables afin de ne tester que celles
qui m'intéressent. Petite curiosité, la deuxième feuille de calcul du
Workbook est lue en premier sous un nom feuillea$ et a un type System Table,
la première feuille de calcul est lue en second et a un type Table et
s'affiche avec un nom 'feuilleb$' entre guillemet simple quote!
j'ai ce message d'erreur même si je supprime la ligne :
$tabname=str_replace("'","",$tabname);
si je mets en clairle nom de la feuille dans la requête SQL,
$sql ="SELECT * FROM [feuilleb$];
ou bien
$sql ="SELECT * FROM ['feuilleb$'];
j'ai un message d'erreur disant que la feuille n'est pas trouvée!
Que veut dire ce message de perte de connexion à la feuille?
Merci pour tout eclaircissement.
Cordialement
Oups, 1000 excuses, mon fichier Excel était coincé! Même si je changeais le nom des feuilles, mon programme lisait le nom original! Tout fonctionne avec le filtre des simple quote sur le nom des feuilles.
Bonjour, Je cherche, par programme php sur un serveur, à lire/écrire des données dans un fichier Excel. Après avoir réussi à me connecter et lire le nom des tables, la première requête SQL génère un message d'erreur disant que la connexion est perdue! Pour la connexion au fichier Excel j'utilise : $conn = new COM("ADODB.Connection")or die("Cannot start ADO"); $dsn="Driver={Microsoft Excel Driver (*.xls)};DriverIdy0;DBQ=".$_SERVER['DOCUMENT_ROOT'].$dbname.";ReadOnly=0" ; $conn->Open($dsn);
pour lire le nom des tables, j'utilise :
function ExcelTables() { global $conn; // référence à la connexion ADO $arr= array(); $adors=$conn->OpenSchema(20);//tables if ($adors){ $f = $adors->Fields(2);//table/view name while (!$adors->EOF){ $arr[]=$f->value; $adors->MoveNext(); } $adors->Close(); } return $arr; } //---
et le code fautif :
foreach (ExcelTables() as $tabname){ if (eregi($reg,$tabname)){ $tabname=str_replace("'","",$tabname); $sql ='SELECT * FROM [$tabname]'; $rs = $conn->Execute($sql);//ligne générant le message d'erreur suivant :
Warning: (null)(): Invoke() failed: Une exception s'est produite. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][Pilote ODBC Excel] La connexion permettant de visualiser votre feuille de calcul Microsoft Excel liée est perdue
J'ai ajouté un filtre sur les noms de tables afin de ne tester que celles qui m'intéressent. Petite curiosité, la deuxième feuille de calcul du Workbook est lue en premier sous un nom feuillea$ et a un type System Table, la première feuille de calcul est lue en second et a un type Table et s'affiche avec un nom 'feuilleb$' entre guillemet simple quote!
j'ai ce message d'erreur même si je supprime la ligne : $tabname=str_replace("'","",$tabname); si je mets en clairle nom de la feuille dans la requête SQL, $sql ="SELECT * FROM [feuilleb$]; ou bien $sql ="SELECT * FROM ['feuilleb$']; j'ai un message d'erreur disant que la feuille n'est pas trouvée!
Que veut dire ce message de perte de connexion à la feuille? Merci pour tout eclaircissement. Cordialement