2011-08-19 2 views
3

Je dois rendre les informations de la base de données utilisables en permettant à l'utilisateur de les télécharger en format PDF ou Excel (l'une fonctionne, l'autre est parfaite).Comment générer un fichier PDF/Excel à partir d'une base de données SQL en utilisant C# et MVC 2?

J'ai regardé autour d'un tas d'options, mais je ne peux vraiment pas décider lequel je devrais utiliser, et encore moins si l'une de ces options est réellement utile. La plupart des options que j'ai trouvées tournent autour de la conversion de fichiers HTML déjà existants en fichiers PDF, ce qui n'est pas ce dont j'ai besoin. En outre, il doit être libre. Mes patrons ne m'ont pas donné un budget à dépenser pour cela

Je ne sais pas quelle autre information je devrais inclure ici.

Eh bien, toute aide est grandement appréciée. Si vous avez des questions sur les informations manquantes, je les ferai parvenir dès que possible. Je suis ici toute la journée, donc je serai en mesure de répondre à tout commentaire très rapidement.

EDIT: Oh ouah! Merci beaucoup, les gars, pour la réponse massive! J'ai eu une tonne d'idées. C'est super utile. Merci!

+0

quelle méthode utilisez-vous pour accéder à la base de données? Cadre d'entité? Linq à SQL? DataTables? – Jroc

+0

J'utilise Entity Framework pour accéder à la base de données. –

Répondre

1

La solution que je propose habituellement à mes clients dans cette situation est d'utiliser SQL Server Reporting Services (SSRS). Vous pouvez utiliser le contrôle ReportViewer inclus avec celui-ci afin de générer des PDF, des feuilles de calcul Excel, des fichiers XML, des fichiers CSV et autres. Si vous avez besoin de rapports ad hoc, il existe également un Report Builder. Si vous ne le faites pas, vous pouvez utiliser OpenXml pour générer des feuilles de calcul Excel et une foule de kits d'outils PDF sont disponibles.

+0

Un grand merci pour cette suggestion. Il y avait beaucoup de réponses, mais en fin de compte c'est celui que j'ai choisi. Il a fallu plus d'efforts que j'espérais pour que ça marche, mais je pense que c'est la meilleure option. C'est peut-être trop bon. –

0

Avez-vous examiné le contrôle reportviewer, qui fait partie de Visual Studio?

Il vous permet d'exporter le rapport au format PDF ou Excel.

0

Il existe de nombreuses solutions de création de rapports, telles que SQL Server Reporting Services (pour lequel vous possédez peut-être déjà une licence). Jetez un oeil à Reporting (free || open source) Alternatives to Crystal Reports in Winforms qui peut probablement être appliqué sur le web avec un peu de sérialisation.

Je suggère de penser à rouler les vôtres en fonction de la situation. Vous pouvez utiliser pdfsharp pour l'exportation pdf et EPPlus pour Excel. Ils sont tous les deux très faciles à utiliser et, j'en suis sûr, disponibles en nuget en quelques clics.

0

Si vous voulez aller sur la route Excel, je recommanderais cet article de Stephen Walther intitulé ASP.NET MVC Tip #2 - Create a custom Action Result that returns Microsoft Excel Documents. Cela utilise un vieux truc d'écrire un document HTML avec un type mime Excel. Ceci est différent de la diffusion en continu d'un fichier Excel natif. Et il est assez facile de changer le rendu d'un fichier CSV si vous voulez le réduire et en faire un fichier plus universel. N'oubliez pas de cocher tous les champs s'il y a une possibilité de virgule.

0

Si ce que vous faites n'est pas trop compliqué, vous pouvez utiliser des fichiers CSV. CSV est synonyme de valeurs séparées par des virgules, et c'est ce que cela ressemble. Vous pouvez créer des tables et des colonnes simples à l'aide de virgules. Par exemple coller les lignes suivantes dans un fichier texte:

heading1,heading2,heading3 
info1,info2,info3 
info1,info2,info3 

Enregistrez le fichier texte sous forme de fichier .csv et le tour est joué - une feuille de calcul Excel.Évidemment, il est extrêmement facile de construire ces collections d'objets en boucle. Attention si vous avez besoin d'un formatage de texte compliqué, alors ce n'est pas vraiment la meilleure option.

5

Si vous souhaitez générer un fichier Excel (ou Word), vous pouvez utiliser openXml. Vous pouvez créer un nouveau document exactement comme vous le souhaitez à partir du code pur.

OpenXml SDK page

+0

+1 Les documents techniques MSDN sont HUGELY verbose et je les trouve difficiles à suivre. Bien meilleur démarrage rapide sur [ce blog développeur MSDN] (http://blogs.msdn.com/b/chrisrae/archive/2011/08/18/creating-a-simple-xlsx-from-scratch-using-the- open-xml-sdk.aspx) –

Questions connexes