2010-06-03 3 views
1

ADO.NET échoue lamentablement quand il est utilisé pour lire des fichiers Excel où une colonne contient des types de données mixtes. Il semble qu'il essaie de déterminer le type de données d'une colonne, puis suppose que le reste de la colonne entière est du même type de données. Voici quelques arrière-plans:Qu'est-ce qu'une alternative à ADO.NET, mais élégant en C# pour lire les fichiers Excel

How to prevent ADO.NET from altering double values when it reads from Excel files

http://blog.lab49.com/archives/196

Qu'est-ce qu'une approche alternative qui n'est simple (depuis l'entrée fichier Excel ne nécessite pas avoir l'automatisation, Excel pour être co-installé, un feuille de calcul dans chaque fichier).

+0

selon votre format de fichier Excel, vous pouvez utiliser une bibliothèque OpenXML pour obtenir vos données ou pour extraire des données au format XML et consomment directement –

+0

Je suppose que vous pouvez télécharger sur Google Docs et de l'utilisation leur API. À tout le moins, il devrait éviter les problèmes de structuration que vous décrivez avec ADO. – ladenedge

+0

Dans quel (s) format (s) se trouvent les fichiers? (csv, xls, xlsx, etc) –

Répondre

3

Cela dépend un peu des versions Excel que vous devez prendre en charge. J'ai utilisé ExcelPackage avec succès dans le passé pour lire et créer des fichiers Excel 2007. Ce n'est plus en développement, ce qui est un peu dommage. Vous auriez à boucler manuellement toutes les cellules, que je n'appellerais pas élégantes, mais c'est flexible;)

Leniel a suggéré d'utiliser EPPlus sur ExcelPackage. Je ne l'ai pas utilisé moi-même, mais ça a l'air très prometteur.

Il existe plusieurs autres suggestions dans this question, mais je n'ai aucune expérience avec les autres bibliothèques.

+0

ExcelPackage semble prometteur. –

+0

@Khnle: Après ma réponse, vous avez ajouté l'exigence ** .xls **. Il ne fait pas de fichiers plus anciens qu'Excel 2007 (.xslx), mais certaines de ces autres bibliothèques le font. – Thorarin

+0

Je peux ajouter le support pour Aspose, indirectement mentionné dans la question liée. C'est cher, mais de haute qualité. (http://www.aspose.com/) – ladenedge

Questions connexes