2010-10-08 5 views
1

Je cherche un moyen de lire (écrire serait bien aussi - bien que pas critique) un fichier Excel. Je veux dire le format 97-2003 depuis MS fournit OO XML toolkit pour le format 2007 et j'ai entendu la boîte à outils est très bien.Comment lire de manière fiable les données du fichier Excel?

Ce que je l'ai fait jusqu'à présent est tout simplement utilisé le OleDB (Microsoft Jet) qui a de nombreux problèmes et inconvénients qu'il est encore difficile de croire :)

Je sais qu'il ya beaucoup de bibliothèques libres (par exemple sur CodePlex), mais ils utilisent OldeDb (ils souffrent donc du même problème).
Le seul que j'ai trouvé, mais que je n'ai pas encore essayé, est http://exceldatareader.codeplex.com/ qui fait apparemment la lecture binaire du fichier Excel. J'aimerais recevoir vos recommandations et témoignages concernant les bibliothèques que vous avez utilisées ou lues.

EDIT: Désolé si ce n'était pas évident, mais je veux dire une bibliothèque .NET.

+0

Une saveur particulière de la langue que vous voulez lire (et éventuellement écrire) Excel? Vous n'avez pas spécifié, bien que l'exemple que vous avez cité soit une bibliothèque .Net. Je demande en tant que développeur de l'une de ces bibliothèques gratuites (sur Codeplex) que vous memntion ... qui n'utilise pas OleDb. –

+0

C#, VB.NET mais aussi tout ce qui va compiler vers MSIL :) Développez-vous Excel Data Reader? –

+0

Non ... Je suis le développeur de PHPExcel, un pur lecteur PHP/écriture pour une gamme de formats de classeurs, y compris les deux saveurs clés d'Excel, donc probablement pas d'un grand intérêt si vous recherchez une solution .Net. –

Répondre

1

Avez-vous eu une préférence linguistique particulière? Si vous êtes à l'aise avec Python, je recommande chaudement xlrd.

Il ne devient pas beaucoup plus facile que l'exemple de code ci-dessous;
qui recherche à travers des feuilles d'un classeur pour un motif particulier:

import re, xlrd 

def re_search(fname, query): 
    ''' iterate through sheets of workbook searching for `query` ''' 
    book = xlrd.open_workbook(fname) 
    for sheet in book.sheets(): 
     for rowx in xrange(sheet.nrows): 
      for colx in xrange(sheet.ncols): 
       cell = sheet.cell(rowx, colx) 
       if cell.ctype == xlrd.XL_CELL_TEXT and query.search(cell.value): 
        yield cell.value 

if __name__ == '__main__': 
    my_pattern = re.compile('[A-Z]{3} (.*)') 

    for matched_re in xlresearch('my_xl_file.xls', my_pattern): 
     print matched_re 
+0

Y a-t-il une chance que cela fonctionne avec IronPython? –

+1

xlrd auteur John Machin a posté des instructions pour IronPython: http://groups.google.com.au/group/python-excel/browse_thread/thread/8bb393c963e8eff5/8ba724cb5720eb43 Dites-nous comment ça se passe!Bonne chance à vous. – bernie

2

Je ne sais pas ce que vos contraintes ne sont que si je vous (ce qui est l'expérience de parler, croyez-moi), j'éviter de lire Fichiers Excel avec tout sauf Excel. Ma recommandation est de garder les choses simples et de s'en tenir au CSV. La plupart des bibliothèques (xlrd inclus) prennent en charge uniquement les fonctionnalités de base d'Excel (désolé, pas de graphiques ou de tableaux croisés dynamiques) et CSV.

+0

Je ne peux pas utiliser Excel car cela est supposé fonctionner avec ASP.NET et l'automatisation Excel côté serveur n'est ni recommandée ni prise en charge par Microsoft. J'ai considéré CSV comme une solution mais cela signifie ajouter du travail supplémentaire à mes utilisateurs et ce n'est pas le point :) –

+1

J'ai eu plus de problèmes avec l'importation de CSV dans SQL Server (2005). Excel interprète correctement les colonnes où SQL Server a manqué. – Dave

0

Je ne sais pas quel est votre cas, mais si vous avez installé un excel sur la machine, vous pouvez l'utiliser via l'interface OLE.

1

L'utilisation de SSIS? Comment importer un fichier Excel dans SQL Server 2005 à l'aide d'Integration Services http://www.techrepublic.com/blog/datacenter/how-to-import-an-excel-file-into-sql-server-2005-using-integration-services/205
Open Source? EPPPlus Créer des feuilles de calcul Excel 2007/2010 avancées sur le serveur http://epplus.codeplex.com/
C#? Comment importer des données d'une colonne d'Excel à listBox utilisant C# How to import data from one column of Excel to listbox using C#
serveurs liés: Comment utiliser Excel avec des serveurs liés SQL Server et requêtes distribuées http://support.microsoft.com/kb/306397
Insertion en bloc de données en utilisant C# DataTable et le serveur SQL fonction OpenXML http://www.codeproject.com/Articles/32581/Import-Data-from-Excel-to-SQL-Server
Et Beaucoup plus!!!

Questions connexes