J'utilise ASP.NET pour ouvrir un document Excel 2003 hébergé sur le serveur. La feuille de calcul Excel, produite par un système hors de mon contrôle, a 5 feuilles de calcul nommées. J'accès aux données dans chaque feuille comme suit (les sauts de ligne ajoutée pour une meilleure lisibilité):Erreur lors de l'accès à certaines feuilles Excel avec Jet
string ExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\sample.xls;
Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\";";
OleDbDataAdapter myData =
new OleDbDataAdapter("SELECT * FROM [mysheet]", ExcelConn);
myData.TableMappings.Add("Table", "mysheet");
myData.Fill(ExcelDS);
Cela fonctionne pour 3 des 5 feuilles. Les deux autres lancer cette erreur:
The Microsoft Jet database engine could not find the object 'mysheet'. Make sure the object exists and that you spell its name and the path name correctly.
J'ai quadruple vérifié le nom de la feuille en examinant le texte dans l'onglet en bas et aussi en examinant la fin de la chaîne que ce produit dans Excel:
=CELL("filename")
c:\[sample.xls]mysheet
La chaîne de connexion est spécifiée une fois et réutilisée pour les 5 feuilles.
Est-il possible que je doive référencer la feuille avec une chaîne qui ne correspond pas au nom visible dans Excel? Peut-être des caractères cachés, des espaces, etc.? Y a-t-il un autre moyen de trouver le vrai nom de la feuille? D'autres suggestions pour récupérer ces données?
Note: Je ne peux pas modifier le document Excel (j'aurais utilisé SSIS pour importer CSV si je pouvais l'avoir à ma guise). J'utilise .NET 3.5/II6.