Comment utilisez-vous Excel côté serveur?
Un client veut "mettre en ligne" une feuille de calcul -- à l'utilisateur de spécifier les valeurs de certaines cellules, puis leur montrer les valeurs obtenues dans d'autres cellules.
(Ils ne veulent PAS montrer à l'utilisateur une "feuille de calcul" de l'interface. Ce n'est pas une question de l'INTERFACE utilisateur.)
Ils ont une énorme feuille de calcul avec beaucoup de calculs sur beaucoup, beaucoup de feuilles. Mais, en fin de compte, seules deux choses comptent -- (1) vous mettez les numéros dans une couple de cellules sur une feuille, et (2) on obtient un nombre correspondant à un couple de cellules dans une autre feuille. Le reste est une boîte noire.
Je veux vous présenter une INTERFACE graphique permettant à l'utilisateur d'entrer les chiffres qu'ils veulent, alors j'aimerais par programmation d'ouvrir le fichier Excel, définir le nombre, de lui dire de re-calc, et lire le résultat.
Est-ce possible/souhaitable? Est-il une composante commerciale qui rend plus facile? Sont leurs pièges, je ne suis pas pris en compte?
(Je sais que je peux utiliser de bureautique pour ce faire, mais je sais qu'il n'est pas recommandé de le faire côté serveur, car il essaie de s'exécuter dans le contexte d'un utilisateur, etc.)
Edit: beaucoup de gens disent, j'ai besoin de recréer les formules dans le code. Cependant, ce serait extrêmement complexe. Cela ressemble à ce pourrait être un problème résolu -- est-ce que quelqu'un sait d'un composant d'un type qui allait le faire pour moi? Quelqu'un a d'avoir créé des "Excel-formule-à-code" système de génération. Je serais heureux de payer pour cela.
Modifier/Solution: SpreadsheetGear est ce que je cherchais. Entre autres choses, il vous permet d'utiliser un XLS comme une calculatrice. Vous pouvez définir les valeurs brutes des cellules sélectionnées et ensuite de lire les valeurs des cellules calculées. Exactement ce que je cherchais.
source d'informationauteur Deane
Vous devez vous connecter pour publier un commentaire.
Vous ne voulez certainement pas à l'aide de l'interopérabilité sur le côté serveur, c'est assez mauvais en l'utilisant comme une bidouille sur le côté client.
Je vois deux options:
Figure sur la feuille de calcul logique. Cela peut vous aider dans le long terme en faisant de la logique métier d'une quantité connue, et dans le court terme, vous pouvez trouver qu'il ya effectivement des bugs dans la feuille de calcul (j'ai rencontré des tonnes de monstres feuilles de calcul utilisées pour les années qui se sont simples et les bogues - tout le monde a tout pris en charge les réponses doivent être à droite)
Évaluer SpreadSheetGear.NETqui est essentiellement un remplacement pour l'interopérabilité qui fait tout sans Excel (il réplique d'un énorme morceau de Excel non-logique visuelle et IO .NET)
C'est possible, mais pas recommandé (et non pris en charge officiellement).
Vous pouvez interagir avec Excel par le biais de COM ou le .NET Primary Interop Assemblies, mais c'est censé être une côté client processus.
Sur le côté serveur, pas d'affichage ou de bureau est disponible et à tous les imprévus boîtes de dialogue (par exemple) fera de votre application web et accrocher votre application se comporte feuilletée.
Aussi, de la fixation d'un processus Excel pour chaque demande, n'est pas exactement une faible ressource.
De travail hors de la zone de noir et de re-mettre en œuvre dans un bon langage de programmation est clairement le meilleur (comme dans "plus fiable et plus rapide").
Liées à la lecture: KB257757: Considérations sur le côté serveur d'Automatisation de Bureau
Bien que c'est tout à fait possible à l'aide de ASP.NET il est très déconseillé. Il est non-évolutive et sujettes à la simultanéité des erreurs.
Votre meilleur pari est d'analyser la feuille de calcul les calculs et de les dupliquer. Maintenant, d'accord, votre entreprise ne va pas comme le temps qu'il faut pour le faire, mais ça va (sans doute) de leur donner un système utilisable.
Vous pouvez également vous servir de la feuille de calcul pour les utilisateurs de votre site web, dans ce cas, vous n'avez presque rien.
Edit: Si vos parties prenantes vraiment insister sur l'utilisation d'Excel côté serveur, je vous suggère de prendre un bon coup d'oeil dur à Excel Services @John Saunders suggère. Il ne peut pas obtenir vous tout vous voulez, mais vous aurez un peu, et devrait permettre de résoudre certains des problèmes que vous aurez à essayer de le faire côté serveur avec ASP.NET.
Qui ne veut pas dire que c'est une panacée; votre kilométrage peut certainement varier. Et Sharepoint n'est pas exactement bon marché d'acheter ou d'entretenir. En fait, les coûts à court terme pourrait facilement être éclipsés par les coûts à long terme si vous allez Sharepoint route--mais il pourrait la meilleure option pour s'adapter à une exigence.
J'ai toujours penser que vous poussez en faveur de retour de codage de l'ensemble de votre logique dans un document distinct .NET module. De cette façon, vous pouvez l'utiliser à la fois côté serveur et côté client. Excel peut facilement passer des calculs à un objet COM, et vous pouvez très facilement publier votre .NET de la bibliothèque en tant qu'objets COM. En fin de compte, vous aurez beaucoup plus maintenable et utilisable architecture.
Négliger la discussion si cela a du sens pour manipuler une feuille excel sur le serveur-côté, un moyen d'effectuer ce serait probablement ressembler à l'adoption de la
Microsoft.Office.Interop.Excel.dll
L'utilisation de cette bibliothèque, vous pouvez indiquer à Excel pour ouvrir une feuille de calcul, de modifier et de lire le contenu de .NET. J'ai utilisé la bibliothèque dans une application WinForm, et je pense qu'il peut aussi être utilisé à partir de ASP.NET.
Encore, de considérer les problèmes de simultanéité déjà mentionné... Toutefois, si la feuille est accessible souvent, pourquoi pas...
La façon la plus simple de le faire pourrait être de:
Télécharger le classeur Excel de Google Docs -- c'est très propre, dans mon expérience,
Utiliser les feuilles de calcul Google API de Données pour mettre à jour les données et retourner les chiffres.
Voici un lien pour vous aider à démarrer sur ce, si vous voulez aller dans cette direction:
http://code.google.com/apis/spreadsheets/overview.html
Permettez-moi d'être plus catégorique que les autres ont été: ne pas de l'utilisation d'Excel côté serveur. Il est destiné à être utilisé comme une application de bureau, le sens qu'il n'est pas destiné à être utilisé à partir aléatoire des threads différents, éventuellement, plusieurs threads à la fois. Vous êtes mieux de la rédaction de votre propre feuille de calcul que d'essayer d'utiliser Excel (ou tout autre Bureau de bureau produit) forme un serveur.
C'est une des raisons qui Excel Services. Une recherche rapide sur MSDN tourné ce lien: http://blogs.msdn.com/excel/archive/category/11361.aspx. C'est une catégorie de la liste, qui comporte une liste de messages de blog sur le sujet. Voir aussi Microsoft.Bureau de.Excel.Serveur.WebServices Espace De Noms.
On dirait que vous parlez que l'utilisateur a la feuille de calcul ouverte sur leur système local, et vous voulez un site web pour manipuler les locaux de feuille de calcul?
Si c'est le cas, vous ne pouvez pas vraiment le faire. Même la bureautique ne va pas aider, sauf si vous voulez avoir besoin de télécharger la fiche au serveur et de télécharger une nouvelle version modifiée.
Ce que vous pouvez faire est de créer un service web pour faire les calculs et ajouter un peu de vba ou vsto code de la feuille Excel pour parler de ce service.