web-dev-qa-db-fra.com

Créer des fichiers Excel à partir de C # sans bureau

J'écris un programme qui génère des rapports Excel, en utilisant actuellement la référence Microsoft.Interop.Excel. Excel est installé sur mon ordinateur dev, mais il est possible que l'utilisateur final ait installé ou non Office. Cet outil échouera-t-il si Office n'est pas installé sur l'ordinateur de l'utilisateur final ou si ce service d'interopérabilité est-il séparé de l'application réelle?

54
tbischel

Sauf si Excel est installé sur le serveur/PC ou utilisez un outil externe (ce qui est possible sans utiliser Excel Interop, voir Créer un fichier Excel (.XLS et .XLSX) à partir de C # ), il échouera . L'utilisation de l'interop nécessite l'installation d'Excel.

35
Adriaan Stander

Si vous souhaitez créer des fichiers .xlsx (Office 2007 et versions ultérieures), vous avez de la chance. Office 2007+ utilise OpenXML qui, faute de description plus pertinente, est constitué de fichiers XML contenus dans un zip nommé .xlsx

Prenez un fichier Excel (2007+) et renommez-le en .Zip, vous pouvez l'ouvrir et y jeter un coup d'œil. Si vous utilisez .NET 3.5, vous pouvez utiliser la bibliothèque System.IO.Packaging pour manipuler les relations et le fichier zip lui-même, ainsi que linq to xml pour jouer avec le xml (ou simplement DOM si vous êtes plus à l'aise).

Sinon, je vous recommande DotNetZip , une bibliothèque puissante pour la manipulation de fichiers zip.

OpenXMLDeveloper possède de nombreuses ressources sur OpenXML et vous pouvez en trouver davantage ici.

Si vous voulez .xls (2003 et inférieur), vous devrez vous pencher sur les bibliothèques tierces ou peut-être apprendre le format de fichier vous-même pour y parvenir sans qu'Excel ne soit installé.

40
Aren

Essayez EPPlus si vous utilisez Excel 2007. Prise en charge des plages, du style de cellule, des graphiques, des formes, des images et de nombreux autres éléments

28
Jan Källman

Il y a une poignée d'options:

  • NPOI - Qui est libre et open source.
  • Aspose - N’est certainement pas gratuit mais robuste.
  • Spreadsheet ML - Fondamentalement XML pour créer des feuilles de calcul.

L'utilisation d'Interop nécessitera l'installation d'Excel sur la machine à partir de laquelle il s'exécute. Dans une solution côté serveur, ce sera affreux. Au lieu de cela, vous devriez utiliser un outil comme ceux ci-dessus qui vous permet de créer un fichier Excel sans qu'Excel ne soit installé.

Si l'utilisateur n'a pas Excel mais dispose d'un outil qui lira Excel (comme Open Office), il pourra évidemment l'ouvrir. Microsoft propose gratuitement visionneuse Excel pour les utilisateurs n'ayant pas Excel.

11
Thomas

Une interopération appelle quelque chose d'autre, c'est un assemblage d'interopérabilité, de sorte que vous interopérez avec quelque chose ... dans ce cas, Excel, Excel installé.

Dans ce cas, oui, son exécution échouera car dépend de Excel, vous appelez simplement des fonctions Excel. S'ils ne l'ont pas installé ... par chance.

Il existe des méthodes pour générer sans Excel, à condition que le format de fichier 2007 soit correct, en voici quelques-unes:

comme je l’ai dit cependant, c’est le format 2007 , normalement s’il s’agit de quoi que ce soit, c’est le facteur décisif.

10
Nick Craver

Utilisez OleDB, vous pouvez créer, lire et éditer des fichiers Excel assez facilement. Lisez la documentation MSDN pour plus d'informations:

http://msdn.Microsoft.com/en-us/library/aa288452 (VS.71) .aspx

J'ai utilisé OleDB pour lire des fichiers Excel et je sais que vous pouvez les créer, mais je ne l'ai pas fait directement.

7
Justin

Vous pouvez utiliser la classe ExcelStorage de la bibliothèque FileHelpers , c'est très simple et facile ... vous aurez besoin d'Excel 2000 ou version ultérieure installée sur la machine.

FileHelpers est une bibliothèque .NET gratuite et facile à utiliser pour importer/exporter des données à partir d’enregistrements de longueur fixe ou délimités dans des fichiers, des chaînes ou des flux.

3
Dean Kuga