2009-11-07 6 views
0

Comment puis-je 'lire' un document Excel 2003 stocké sous forme de fichier spfile à partage? Je peux récupérer le document de la bibliothèque sans problèmes en utilisant le SPFile.OpenBinary() et en le mettant dans un MemoryStream.Lire des données d'un document Excel stocké dans Sharepoint?

L'idée originale était d'utiliser OpenXML pour interroger le document (qui prendra ce type d'objet en tant que constructeur), mais la version Excel (2003) l'interdit.

Pour ne rien arranger, il n'y a aucune garantie que je disposerai d'une version Excel sur la machine hôte, donc je ne pourrai pas non plus utiliser les assemblages interop.

Des suggestions ou des solutions seront reçues avec reconnaissance.


Quand je dis lu, je veux dire extraire des données de plages nommées, des références de cellules etc. Toutes les bibliothèques open source que j'ai trouvé (Exceldatareader, NOPI, OpenXML) ont une limitation ou d'une autre qui interdit leur utilisation. par exemple. impossible de charger les feuilles activées pour les macros

Le document Excel est chargé dans une bibliothèque de partage qui expose cette liste sous forme de collection de SPFile (s). Ces fichiers peuvent être lus dans un MemoryStream assez simplement, mais la plupart des librairies que j'ai essayées nécessitent un constructeur de filestream, ce qui signifie écrire dans le système d'exploitation sur le serveur d'application. sur le système de fichiers, alors je vais vérifier, mais ce n'est pas une option sur ce projet. Je vais mettre à jour ce fil avec mes conclusions ...

Je suis réduit à utiliser les PIA. Sale, sale, sale.

Répondre

0

J'ai trouvé cette [bibliothèque] (http://exceldatareader.codeplex.com/) sur codeplex qui semble être capable de lire n'importe quelle version d'Excel. Il pourrait y avoir beaucoup plus sur le web

+0

J'utilise cette bibliothèque au moment sans succès, et ne suis pas sûr que je serai en mesure d'écrire à un emplacement sur le système de fichiers. Le constructeur prend uniquement un flux de fichier et pas un objet de flux de mémoire. – OldBoy

0

Quand vous dites lire exactement ce que vous voulez dire? Il semble y avoir un grand débat parmi les développeurs quant à la définition du terme. D'une manière ou d'une autre, cela ne devrait pas vraiment avoir d'importance si Excel est sur leur système ou non, parce que je suis à peu près sûr que si la personne voulait voir le fichier d'une manière quelconque, elle aurait besoin d'un lecteur. Cela étant dit, je crois que votre peur est un point discutable et que l'utilisation d'un MemoryStream devrait suffire.

1

peut ouvrir un xls et xlsx classeurs à partir d'un flux de mémoire avec SpreadsheetGear.Factory.GetWorkbookSet(). Workbooks.OpenFromStream (System.IO.Stream) et a également la possibilité d'ouvrir directement à partir d'un tableau d'octets avec OpenFromMemory (octet[]). Une fois ouvert, SpreadheetGear possède une API complète, un moteur de calcul, un moteur de rendu et plus encore.

Vous pouvez voir des échantillons en direct here et télécharger l'essai gratuit here.

Disclaimer: Je possède SpreadsheetGear LLC

Questions connexes