Notre client obtient des fichiers Excel au format HTML d'Excel (c'est ainsi que cela arrive, personne n'a le contrôle.) Nous devons ensuite exécuter un rapport basé sur les données dans le fichier. L'utilisation de ADO.NET (OleDbReader) génère une exception "Fichier externe non prévu dans le format".Comment remplir DataTable à partir d'une feuille de calcul Excel en mémoire
Si les données sont converties au format Excel normal, elles sont lues dans OK. Cependant, ce n'est pas vraiment une solution, car elle impose une étape supplémentaire, et ils ne sont pas trop alphabétisés dans le meilleur des cas. La seule solution que j'ai pu trouver était d'utiliser Excel Automation pour créer une nouvelle feuille de calcul, la remplir avec les mêmes données et la lire à la place. Mais ADO.NET semble être seulement capable de lire à partir d'un fichier sur le disque. Je pourrais bien sûr enregistrer le fichier et le supprimer quand j'en aurai fini (ce que j'ai vérifié fonctionnera). Mais je ne suis pas à l'aise avec l'idée de jouer avec leur système de fichiers. Donc ma première question est - est-il un moyen de remplir un DataTable à partir d'une feuille de calcul Excel en mémoire?
En outre, je n'aime pas l'ensemble de l'entreprise avec l'utilisation de l'automatisation; C'est incroyablement lent. L'opération prend plus de 30 secondes même sans remplir le DataTable. Donc, une solution qui rend le tout plus lent ne sera pas bonne. Cela m'amène à ma deuxième question - Y a-t-il une meilleure façon d'accomplir ce que j'essaie ici?