ASP.Net et Excel - Nouvelle version



Documents pareils
Généralités. Sans copie de sauvegarde sur support externe, vous ne pourrez jamais récupérer vos multiples encodages. 1.1 Sauvegarde des données

TP2 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

Connexion à SQL server

Modules Prestashop - ExportCatalogue / EXPORT IMPORT POUR MODIFICATIONS EN MASSE DANS PRESTASHOP VERSION Optim'Informatique

Dans l'article précédent, vous avez appris

Manuel de l utilisateur

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Ak Documentation

TP2_1 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

Base de Connaissances SiteAudit. Utiliser les Rapports Planifiés. Sommaire des Fonctionnalités. Les Nouveautés

Visual Basic et les Bases de Données

Les logiciels gratuits en ligne

< Atelier 1 /> Démarrer une application web

TAGREROUT Seyf Allah TMRIM

Mise à jour : Octobre 2011

INTRODUCTION à Microsoft Dynamics CRM 2013 FR80501

PLATEFORME SAAS D'ENVOI DE SMS. Guide du débutant UTILISER LA PLATEFORME SMSMODE TUTORIEL

Voici les objectifs de la séance d'aujourd'hui :

Utiliser un tableau de données

les techniques d'extraction, les formulaires et intégration dans un site WEB

RoboCompta RoboCompta Connect

Méthode de préparation du fichier texte d import depuis Excel, via Access jusqu à Drupal.

Rechercher et supprimer les doublons!

Table des Matières. Pages 3-4. A propos d emblue. Page 5. L environnement emblue. Création d une campagne d marketing. Pages 6-15.

Androïd Manuel d installation MB PRO LIGHT Préalable. Définitions

Utilisation d Hyperplanning 2011

Vous venez d acquérir un fichier de données issues de la Base de données SIRENE. Comment utiliser votre fichier?

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement

LimeSurvey. Pour obtenir un compte sur le LimeSurvey de l Université de Genève, remplissez le formulaire de demande en ligne.

Utilisation de l outil lié à MBKSTR 9

Projets de stage. Présentation

WIMS. Découvrir et utiliser

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Gestion de stock pour un magasin

Introduction à Microsoft InfoPath 2010

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

1. Installation du Module

LANDPARK COMMENT ÉTABLIR RAPIDEMENT VOS RAPPORTS

Module 1 : Tableau de bord Excel * 2010 incl.*

BIRT (Business Intelligence and Reporting Tools)

Version 6.0 du 07/11/06. Comment décloisonner mes services et les faire travailler ensemble vers les mêmes objectifs?

Groupe Eyrolles, 2004 ISBN :

GPI Gestion pédagogique intégrée

Tutoriel D utilisation. Du PGI Open line d EBP

Guide d installation de Gael

Administration du site (Back Office)

La Clé informatique. Formation Internet Explorer Aide-mémoire

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

Rapports d activités et financiers par Internet. Manuel Utilisateur

Réglages du portail de P&WC

Module BD et sites WEB

Utilisation de l éditeur.

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Modélisation et Gestion des bases de données avec mysql workbench

Encryptions, compression et partitionnement des données

Les Aventuriers du Bout du Monde La revue des clubs Microcam

Thunderbird est facilement téléchargeable depuis le site officiel

Reporting Services - Administration

Migration a Outlook Guide

Partner Entreprise. Modules de cours pour la formation continue Offre IFAPME Verviers

VAMT 2.0. Activation de Windows 7 en collège

Ecran principal à l ouverture du logiciel

BOUYGUES TELECOM ENTREPRISES - CLOUD

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Business Intelligence avec Excel, Power BI et Office 365

Fiche n 14 : Import / Export avec PlanningPME

Import des utilisateurs depuis Sconet et STSweb - mise à jour du 04/10/06

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

GUIDE D INSTALLATION INTERNET haute vitesse

Paginer les données côté serveur, mettre en cache côté client

Guide tarifaire et commercial Novembre 2014

Utilitaires méconnus de StrataFrame

INTERCONNEXION ENT / BCDI / E - SIDOC

A.-M. Cubat Mise à jour de PMB Passer à une version plus récente du logiciel Page 1 Source :

COURS DE MS EXCEL 2010

Mode operatoire Reseau pedagogique

SQL MAP. Etude d un logiciel SQL Injection

Convertisseur BBAN/IBAN

Le Rapport Automatique de Suivi (RAS)

Logiciel Le Sphinx Plus 2 version 5. Le Sphinx Développement Chavanod

CONTACT EXPRESS 2011 ASPIRATEUR D S

Créer un album photo

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Première édition en format électronique. Parallels Desktop 7 pour Mac OS X.

GUIDE D UTILISATION 1

Procédure serveur : gestion des environnements X3 et bases de données ORACLE

Automatiser la création de comptes utilisateurs Active Directory

Créer et partager des fichiers

Guide d utilisation et d administration

Pourquoi utiliser SharePoint?

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Manuel d installation et d utilisation du logiciel GigaRunner

Auguria_PCM Product & Combination Manager

Suite Jedox La Business-Driven Intelligence avec Jedox

La base de données XML exist. A. Belaïd

UserLock Guide de Démarrage rapide. Version 8.5

Transcription:

ASP.Net et Excel - Nouvelle version (Avec code source à télécharger) Mis à jour le 06/05/2005 Par Elise Dupont Droit de diffusion: L'ensemble ou partie de ce document ainsi que le code mis à disposition, ne peut être diffusé sur d'autres sites Web sans l'autorisation au préalable de son créateur. Avant Propos : Cet article est une refonte totale d un ancien article, qui traitait de la génération de fichiers Excel depuis une application ASP.Net. Cet article n était vraiment pas complet dans le sujet, c est pourquoi j ai décidé de traiter le sujet différemment. Vous pouvez cependant toujours consulter l ancien article. Le but de cet article est de vous présenter de façon un peu plus complète toutes les actions possibles autour d ASP.net et Excel, que ce soit la génération de fichiers Excel ou la lecture de fichiers excel. Vous verrez que la solution que je présentais dans mon ancien article comporte beaucoup d inconvénients, et quand dans certains cas il existe des solutions plus fiables. Sommaire: 1. Lire un ficher Excel avec ADO 2. Générer et lire un fichier Excel en COM (automation office) 3. Générer un fichier Excel en passant par XML 4. Générer un fichier Excel en passant par CSV 5. Tableau comparatif des solutions 6. Graphiques 1. Lire un ficher Excel avec ADO La première solution, est utilisée quand vous devez lire le contenu d un fichier excel. Elle est très simple, et consiste à passer par OLEDB. Il faut construire une connexion qui utilise Microsoft.Jet.OLEDB.4.0 et ensuite effectuer une requête. Un exemple détaillé est disponible dans le code source à télécharger. Dans le répertoire ADO de l application web, vous trouverez 2 exemples : pour lire

un fichier Excel, et pour lire un fichier CSV. Dans les deux cas, le code vous montre comment lire le contenu d un fichier Excel ou CSV, et comme filtrer le contenu d un fichier Excel ou CSV d après une colonne. Pour lire le contenu d un fichier Excel, le code est simple : public static DataSet GetExcelWorkSheet(string pathname,string filename,int worksheetnumber) { OleDbConnection ExcelConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+pathName+@"\"+fileName+";Extended Properties=Excel 8.0;"); OleDbCommand ExcelCommand = new OleDbCommand(); ExcelCommand.Connection = ExcelConnection; OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand); ExcelConnection.Open(); DataTable ExcelSheets = ExcelConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); string SpreadSheetName = "["+ExcelSheets.Rows[workSheetNumber]["TABLE_NAME"].ToString()+"]"; DataSet ExcelDataSet = new DataSet(); ExcelCommand.CommandText = @"SELECT * FROM "+SpreadSheetName; ExcelAdapter.Fill(ExcelDataSet); } ExcelConnection.Close(); return ExcelDataSet; Pour lire un fichier CSV, c est aussi simple. Cette solution n est pas dépendante de la version du fichier Excel. Cela fonctionne normalement pour toutes les versions (sauf oublié de ma part). 2. Générer et lire un fichier Excel en COM (automation office) Cette partie là n a rien de vraiment nouveau. Pour plus de détail sur la solution technique, voir l article que j avais écrit il y a quelques temps (ASP.Net : Générez des Rapport Excel depuis votre application Web). Petit rappel cependant sur la solution technique : elle permettait grâce à l intérop de lire un fichier Excel, de le modifier, d exécuter des macros (qui par exemple génèrent des graphiques), et de renvoyer au client l Excel. Mais cette fois-ci, je vais plutôt vous parler des inconvénients de ce choix technique, et des éventuelles solutions pour les contourner. Le premier inconvénient, c est la stabilité/sécurité : faire de l intérop Excel sur un serveur web, c est rendre potentiellement votre serveur web très instable. Pour plus d informations, allez directement sur le site de Microsoft : http://support.microsoft.com/kb/257757/fr D ailleurs cette technique n est pas supportée par Microsoft. Le deuxième inconvénient, est un problème de processus. Si vous aviez testé la solution que j ai proposé dans mon ancien article,

vous avez peut être remarqué un bel effet de bord : au bout de quelques temps si on regarde les liste des processus sur le serveur, on peut voir une quantité de processus Excel. En fait, quand on exécute le code, le processus Excel n est jamais vraiment terminé correctement. Il existe une méthode (pas très propre) pour contourner le problème, je vais pour l exposer ici : Quand vous fermez votre document Excel, exécutez ce petit code : obook.close(false, xlspath, orien) xl.xlapp.quit() oexcelapp = Nothing System.Diagnostics.Process.GetProcessById(xl.ProcId).Kill() xl = Nothing GC.Collect() Cela tuera le processus Excel associé, afin de ne pas laisser le serveur web plein de processus Excel fantômes. Mais ce code nécessite des droits un peu plus élevés que le compte ASP.Net qui est utilisé en général sur un serveur. Cela peut donc vulnérabiliser votre serveur. Comme je l explique dans un article précédant concernant la sécurité (Sécurisez vos applications.net : Partie 2), donner plus de privilèges à un compte asp.net signifie donner plus de privilèges en cas d attaque. Pour les versions d Excel, reportez vous à l article en question, vous verrez que tout dépend de la version d Excel que vous utilisez. Le dernier inconvénient c est que la configuration du serveur et réussir à faire fonctionner le code semble un peu long. J ai eu pas mal de retour par email suite à mon 1er article sur le sujet. Il semblerait que réussir à faire fonctionner le code que je vous ai fourni demande parfois un peu de peine. Personnellement, je n ai pas eu de soucis sans solution. 3. Générer un fichier Excel en passant par XML Voila une solution qui peut être utile quand vous avez besoin de générer un fichier Excel peu évolué, et de l envoyer au client, sans lire coté serveur un fichier Excel. C est une solution assez simple (pour peu que l on soit familier avec le XML), et à laquelle on ne pense pas forcement. Il s agit d utiliser le OfficeXML afin de générer un fichier XML qui sera compréhensible par Excel. Vous pouvez faire l experience vous-même en ouvrant un fichier excel et en le sauvegardant au format XML. Voici un exemple du contenu d un fichier au format OfficeXML :

Etant donné qu Excel peut sauvegarder ou lire un fichier au format OfficeXML (qui est un XML spécifique à office), rien ne vous empêche de générer un fichier XML qui suit cette syntaxe, et ensuite de générer un flux de type Excel vers le client afin qu Excel prenne le relais au moment de l ouverture du fichier sur le client. Mieux encore, au moment d envoyer le fichier XML au client, vous pouvez le renommer en.xls afin que l ouverture dans Excel soit automatique. Il faudra tout de même vous familiariser avec la syntaxe du OfficeXML. Si c est une contrainte pour votre projet, vous pouvez toujours vous diriger vers la dernière solution proposée dans cet article : générer un fichier CSV. Vous pouvez toujours déporter la syntaxe OfficeXML dans un fichier XSL qui s occupera de la transformation, et n avoir à générer qu un fichier XML de votre propre format. Sachez cependant qu en «SpreadsheetML» (le langage XML pour Excel), vous avez la possibilité de définir des formules par exemple, que vous ne pourrez pas faire en CSV. Pour plus d informations sur le OfficeXML, je vous conseille ce livre chez O Reilly : http://www.oreilly.com/catalog/officexml/ Le but n est pas de vous donner un cours sur le SpreadsheetML, mais de vous fournir des éléments de décision quand à la technologie

que vous retiendrez. 4. Générer un fichier Excel en passant par CSV Le principe est très proche de la solution précédente : générer du texte dans un format compréhensible par excel. Ici il s agit du CSV, un format classique et passe partout, bien interprété par toute version d Excel. Dans le code source à télécharger, je vous expose un petit exemple. Il suffit de séparer le texte par des virgules. Vous pourrez trouver un article plus complet sur le sujet, qui fournit du code source afin d exporter vos données au format CSV ici : http://www.codeproject.com/aspnet/exportclasslibrary.asp (en anglais) Cette solution est très simple, et permet de générer un fichier pour Excel très légèrement. Il n y a aucune contrainte spécifique. Cependant un fichier CSV est plus limité qu un fichier Excel (pas de possibilité de faire un graphique par exemple). 5. Tableau comparatif des solutions Technique Fiabilité Lecture Ecriture / Création Définition de formules Appels de macros Simplicité Automation - OUI OUI OUI OUI *** (surtout lors de la configuration) ADO Ok OUI NON NON NON * SpreadsheetML Ok - OUI OUI NON ** CSV Ok - OUI NON NON * 6. Graphiques Vous verrez dans les solutions proposées que la manière la plus simple d obtenir des graphiques directement dans Excel est d utiliser la solution de l automation. Cependant, si l automation ne vous convient pas pour des raisons de sécurité et/ou fiabilité, il existe d autres moyens d obtenir un graphique sympathique. Ce n est pas le sujet de cet article, mais je vous incite à jeter un coup d œil du coté de SVG. Article en anglais : http://www.123aspx.com/redir.aspx?res=31844 Article en français mais qui expose uniquement des exemples pour l ASP classique ou le PHP : http://www.aspphp.net/scripts/asp-php/generer_svg.php Le portail francophone du SVG : http://www.svgfr.org/ L'ensemble ou partie de ce document ainsi que le code mis à disposition, ne peut être diffusé ailleurs sans autorisation préalable elise.dupont@europe.com - www.dotnet-tech.com - 2003-2005