11
votes

Lire des fichiers Excel en tant que processus de serveur


1 commentaires

J'ai tenté de faire une meilleure question d'ajustement. C'est tout à fait une personne âgée pour que je ne puisse fournir aucun exemple de code / d'exceptions, mais je crois que cela pourrait bien valoir la peine d'atteindre les autres utilisateurs.


8 Réponses :


1
votes

Je ne suis pas sûr de savoir pourquoi l'annonce ne figurait pas dans la pertinence de votre question.

Il y a quelque chose de similaire appelé Excel Services de Microsoft. Je suppose que cela vous permet d'utiliser Excel dans un style WebService. Je pense que SpreadsheetGear est ce que Microsoft a utilisé, comme l'utilisait l'annonce. :)


0 commentaires

1
votes

Excel.

Après des années d'essayer d'arrêter les personnes d'utiliser Excel sur le serveur, ils ont abandonné le besoin du marché et ont commencé à soutenir cela.

2007 a une certaine impulsion pour cela, et Excel 2010 est censé avoir encore plus.


1 commentaires

Scott, nous devons soutenir Excel 2003 au moins (éventuellement 2000). Au moins une des versions que nous devons prendre en charge ne fonctionne pas sur un serveur Vista. Donc, ne vous aide pas du tout, si nous pouvions utiliser Excel, nous le ferions.



3
votes

J'ai utilisé Ado.net Obtenez des données d'un XLS avant. Je ne suis pas sûr que tous les types DOC Excel, cela prendrait en charge mais de vérifier Lecture et écriture de feuilles de calcul Excel utilisant ADO.NET C # DBProviderFactory

Voici un code à partir d'une question alors.

J'ai pu lire et écrire à Excel sans avoir à installer des outils de bureau ou de tiers.


4 commentaires

Ado.net fonctionne vraiment bien pour cela sans avoir besoin d'avoir Excel installé du tout ...


Malheureusement, Ado ne fonctionnera pas pour ce dont nous avons besoin. Je ne suis pas sûr des détails, mais un autre dev n'a pas été en mesure de le faire fonctionner exactement comment nous voulons que l'ADO soit un non go. Merci pour le post cependant.


Si vous pouvez obtenir plus d'informations, nous pouvons probablement vous aider à travers les problèmes que vous voyez avec Ado.net.


L'interface OLDEDB / ODBC pour Excel ne prend pas en charge les formats de tableur ou openxml, a des problèmes de feuilles et des gammes nommées ne correspondant pas à certaines conventions de dénomination, et peut entraîner une troncature si les premières lignes d'une colonne font pas Inclure les données dont la longueur est supérieure à 255 caractères, suit par des lignes que do ont des chaînes plus longues dans ces colonnes. Ce ne sont que quelques-uns des problèmes que je me souviens de mes jours de faire cela. Maintenant, j'exporte et importe uniquement SpreadsheetML - Légère de formation pour les utilisateurs, mais d'énormes avantages dans la stabilité des applications.



1
votes

Voici quelque chose qui peut lire des fichiers .xls et XLSX. C'est une source ouverte. http://code.google.com/p/excelmapper/ .

Il s'agit essentiellement d'une orj, vous devez donc simplement traiter des objets au lieu de OLEDB.


4 commentaires

J'ai découvert que après avoir posté cela. Je n'ai pas encore eu la chance de regarder ça mais merci.


Malheureusement, je ne pense pas que ce soit le genre de chose que je veux faire. En regardant le mapper Excel, il semble que cela importe uniquement dans des objets avec une structure donnée, il existe donc de nombreux champs fortement tapés à la population. Mes données sont d'un type inconnu au début, j'ai alors besoin de lire Excel et de déterminer des types de cela, donc je ne pense pas que cela convient à la tâche.


Ian, Excelmapper Télécharger Inclut un EXE (BuildttosfromeXcel) que vous pouvez exécuter sur les fichiers Excel pour générer les objets fortement dactylographiés. Il comprendra les types de données basés sur les données de colonne. Comme vous l'avez mentionné, le problème ici est que vous devrez exécuter cela chaque fois que vous modifiez le type de données, de sorte qu'il doit connaître le type de données avant la main.


C'est assez juste, mais nous avons déjà un système générique en place pour le faire et que vous devez lire les données brutes que j'ai peut-être suggérées dans mon poste d'origine.



1
votes

Avez-vous essayé SmartXLS pour .NET ?

ou ActiveXLS ?


1 commentaires

Non je n'avais pas. Merci pour la suggestion.



19
votes

Il y avait un certain nombre de bibliothèques qui ont été soulignées par différents utilisateurs qui permettraient le type de fonctionnalité requise. J'ai énuméré ici et certaines d'entre elles ont été évaluées, le cas échéant, j'ai essayé de mettre des commentaires intéressants pour les comparer. Les détails que j'ai inclus sont complètement basés sur l'opinion, mais l'une de ces bibliothèques atteindrait probablement l'objectif requis.

SpreadsheetGear.net
(N'a pas été évalué en raison d'un coût d'achat élevé)

Aspose .Cells
(Évalué par un collègue. Semblait assez simple à mettre en œuvre, performance comparable à Excel Interop).

Gembox
(N'a pas évalué)

Excel Services

(Semble seulement être inclus dans SharePoint 2007)

EXCEL MAPPER (N'a pas évalué car il nécessite des objets fortement dactylographiés à importer dans lesquels ne correspondaient pas à mes besoins).

smartxls
(N'a pas évalué car il nécessite des objets fortement dactylographiés à importer dans lesquels ne correspondaient pas à mes besoins).

ActiveXLS
(Assez facile à utiliser, le manque de propriétés soulève des questions, ils ont une préférence de méthodes d'action triviale. Malgré la réclamation des enregistrements de 1 M, une seconde a été effectuée par moins de flexcel. J'ai décidé que le manuel Help / API est presque inutile.)

Koogra
(N'a pas été évalué en raison de ne pas trouver de documentations / informations)

FichiersHelPers
(N'a pas évalué)

flexcel

(solution de coûts la plus basse trouvée, bonne performance et était simple à mettre en œuvre avec une proximitée à proximité de la structure interopelle Excel. A également reçu une réponse rapide à la question technique du support. Probablement mon choix de bouquet.)

SyncFusion BackOffice
(Coût moyen et a eu une structure raisonnable. Malheureusement, eu plus de difficulté à mettre en œuvre et à des résultats incohérents lors de l'exécution des tests d'unités. A également reçu un certain nombre de "tentatives de lecture de la mémoire protégée", ce qui ne m'a pas encouragé avec une bibliothèque purement gérée.)


4 commentaires

Excellent travail ian. Vous voudrez peut-être mettre en évidence Flexcel car c'est votre option choisie. Ça a l'air très décent.


Salut Ian, merci pour la liste géniale. Savez-vous que l'une de ces bibliothèques prend en charge le calcul des feuilles de calcul contenant des fonctions MACROS / VBA? Je passe du mal à découvrir ....


@MARC: J'ai peur que je ne sache pas - je ne suis pas allé aussi loin dans l'utilisation avancée. Je crois que Flexcel avait une manière d'enregistrer des événements personnalisés + du code mais devait essentiellement être dupliqué dans votre code C #.


Salut Ian, NotMind Merci beaucoup !! La liste a vraiment aidé! J'ai déjà essayé presque tous et aucun ne semble soutenir le calcul de VBA ... bonne chance!



2
votes

Pour lire des fichiers Excel avec C # sans installer Excel, vous pouvez utiliser le POI d'Apache.

C'est une bibliothèque Java pour la lecture et l'écriture de formats MS Office. Depuis que c'est Java et que vous utilisez c #, vous aurez besoin IKVM et les classes Java de la Projet POI .

Cependant, le moyen le plus simple est de simplement télécharger Jon Iles Excelent MPXJ et vous avez tout. Il suffit de définir une référence à ikvm.opendjdk.classlibrary.dll , ikvm.runtime.dll , POI-3.2-final-20081019.dll < / P>

J'ai piraté une application de console rapide pour vous montrer un moyen simple de lire une feuille Excel .xls. Il ne lit que la première feuille et n'utilise pas les itérateurs de la rangée ni de la cellule, mais cela fait bien le travail.

NB: Vous devrez regarder org.apache.poi.sss Pour vous assurer de pouvoir lire .xlsx etc. Fichiers. xxx


1 commentaires

Mark, je vais ajouter à la liste des lecteurs. Honnêtement, pour le projet, je travaille sur nous, nous ne voudrions probablement pas adopter que la route car il y a plus de bibliothèques impliquées, ce qui conduit à plus de maintenance, etc. Nous avons besoin de quelque chose de simple à mettre en œuvre / à maintenir à un coût raisonnable libre de droits. Ce sont certaines des choses que j'ai évalué les possibilités et je pense que cela pourrait être un peu trop impliqué.



1
votes

Je pense au profit de ce fil que je dois mentionner EPPLUS. Son projet OpenSource disponible dans Codépex .

J'ai utilisé cela dans plusieurs projets et je n'ai jamais eu de problèmes avec cela.


0 commentaires