Comment lire des fichiers MS Office sur un serveur sans installer MS Office ni utiliser Interop Library?

StackOverflow https://stackoverflow.com/questions/153079

Question

La bibliothèque d'interopérabilité est lente et nécessite l'installation de MS Office. Souvent, vous ne souhaitez pas installer MS Office sur des serveurs.

J'aimerais utiliser les POI Apache , mais je suis sur .NET.

Je n'ai besoin que d'extraire la partie texte des fichiers, sans créer ni "stocker d'informations". dans les fichiers Office.

Je dois vous dire que j'ai une très grande bibliothèque de documents et que je ne peux pas la convertir en nouveaux fichiers XML.

Je ne veux pas écrire d'analyseur pour les fichiers binaires. Une bibliothèque comme Apache POI le fait pour nous. Malheureusement, ce n'est que pour la plate-forme Java. Je devrais peut-être envisager d’écrire cette application en Java.

Je ne trouve toujours pas d'alternative open source au POI dans .NET, je pense que je vais écrire ma propre application en Java.

Était-ce utile?

La solution

Pour toutes les versions de MS Office:

Pour le nouvel Office (2007):

Pour l'ancien bureau (avant 2007):

Autres conseils

Découvrez les composants Aspose . Ils sont conçus pour imiter la fonctionnalité Interop sans nécessiter une installation complète d’Office sur un serveur.

Les nouveaux formats docx étant par nature des fichiers XML, vous pouvez les créer et les manipuler par programmation avec les techniques DOM XML standard, une fois que vous connaissez la structure.

Les fichiers sont essentiellement des archives zip avec une autre extension de fichier. Utilisez l'espace de noms System.IO.Packaging pour accéder aux éléments internes du fichier, puis ouvrez-les dans un XmlDocument pour effectuer la manipulation.

Il existe des exemples pour cela, et le projet Office Open XML sur SourceForge peut valoir la peine d’être inspiré.

Comme pour les anciens formats binaires, ceux-ci étaient la propriété exclusive de MS et le seul moyen d'obtenir le contenu de l'intérieur est via le modèle objet Office (nécessite une installation d'Office) ou un convertisseur de fichier tiers. / analyseur.

Malheureusement, il n'y a rien de premier utilisateur et natif de la plate-forme .NET pour travailler avec ces fichiers.

Que devez-vous faire avec ce fichier? Si vous souhaitez simplement les diffuser à l'utilisateur, les flux de fichiers de base sont acceptables. Si vous souhaitez créer de nouveaux fichiers (éventuellement basés sur un modèle) à envoyer à l'utilisateur qu'il peut ouvrir dans Office, il existe une variété ou solutions de rechange .

Si vous conservez des données dans des documents Office pour les utiliser sur votre site Web, vous vous trompez. Les documents Office, même les feuilles de calcul Excel et les bases de données d'accès, ne sont pas vraiment un choix approprié pour une utilisation avec un site Web interactif.

Si le document est au format Word 2007, vous pouvez utiliser la bibliothèque system.io.packaging pour interagir avec lui par programme.

RWendi

Dans le monde Java, il existe également un JExcelApi . Il est très clairement écrit, d'après ce que j'ai pu voir, beaucoup plus propre qu'un POI. Alors peut-être qu’un portage de ce code vers .NET n’est pas hors de question, cela dépend bien sûr de suffisamment de temps.

OpenOffice.

Vous pouvez le programmer et le faire faire beaucoup pour vous, sans dépenser de l'argent pour une licence pour le serveur, ni associer la vulnérabilité à celle-ci sur votre serveur.

Les classeurs Microsoft Excel peuvent être lus à l'aide d'un pilote ODBC (ou s'agit-il d'un pilote OLE DB? Vous ne vous en souvenez plus) qui donne au classeur l'apparence d'une table de base de données. Mais je ne sais pas si ce pilote est disponible sans la suite Office elle-même.

Vous pouvez utiliser OpenOffice. Il dispose d'un outil de conversion de ligne de commande:

Guide de conversion

En bref, vous définissez une macro dans OpenOffice et vous appelez cette macro avec une ligne de commande. argument à OpenOffice. Dans cet argument, le nom du fichier local (le fichier Office) est codé.

Ce n’est pas une excellente solution, mais il devrait être réalisable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top