Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

[Open XML] Liens de la semaine 01/02/2010

IMG_0852 Après deux semaines de repos bien méritées et quelques webcasts SharePoint 2010 bien en tête, voici les liens intéressants que j’ai glaner autour de Open XML et de SharePoint 2010 en rapport :

Pour toutes vos questions sur Open XML, un seul endroit, le forum du SDK : http://social.msdn.microsoft.com/Forums/fr-FR/oxmlsdk 

Pour ceux qui se rendent aux TechDays la semaine prochaine, j’aurais la joie de vous retrouver sur le stand ATE pour parler Office, SharePoint 2010 et de vos projets !

Session “SharePoint 2007/2010 et l’Accessibilité” aux Microsoft TechDays

Cette année encore j’animerai une session. En revanche, plus d’Open XML mais du SharePoint à la place ! Pour faire suite aux nombreux séminaires que j’ai pu animé aux côtés de Philippe Béraud (Microsoft France) et de Sylvie Duchateau (Braillenet), cette session sera l’occasion de voir ensemble comment rendre vos sites accessibles aux personnes qui en ont le plus besoin.

Au programme de cette session co-animé avec Philippe Béraud et Michel Hoel de la société Urbilog :

  • Accessibility Kit for SharePoint (SharePoint 2007),
  • L’accessibilité et SharePoint 2010 : WCAG 2, Web-ARIA, etc,
  • Accessibilité et AJAX,
  • Silverligth 2+

Cette session s’intitule ‘ACN201 : Conception de sites Web accessibles avec les technologies SharePoint 2007 et 2010’ et se déroulera de 16h à 17h le Lundi 08 Février.

En espérant vous y retrouvez !

Présentation et sources du séminaire “Développer des applications accessibles” chez Microsoft France

Ce séminaire est la quatrième édition que l’équipe, composée de Sylvie Duchateau (Braillenet), Philippe Béraud (Microsoft France) et moi-même, donnons depuis début 2009.

Ce séminaire s’est déroulé pour cette édition dans les nouveaux locaux de Microsoft à Issy les Moulineaux. Comme à son habitude, l’accueil a été exceptionnel.

 

Sylvie Duchateau (photo à droite) pendant sa démonstration des outils avec une tablette braille et un logiciel d’aide. La maitrise des outils par une personne non voyante est toujours un plaisir à observer, malgré tout, il reste encore beaucoup de travail pour faciliter l’accès à l’information et aux outils dans leur globalité pour ces personnes.

Pour les participants présents, j’avais promis les mises à jour du contenu de la présentation et des sources, c’est chose faite, vous trouverez cela en pièce jointe de ce post.

Cette mise à jour sera certainement répercuté sur le page officielle du séminaire sur le site de Microsoft France sur laquelle vous pouvez trouver l’intégralité des présentations et démonstrations en webcast.

SharePoint 2010 et l’Accessibilité, qu’est-ce que cela donne ? Vous en saurez plus en vous rendant à la session concernant ce thème et dans un prochain post.

Rejoignez-nous à la journée ‘Développer des applications accessibles’ chez Microsoft ce Jeudi 7 Janvier 2010

image L’une des premières conférences Microsoft de l’année – de surcroît GRATUITE - vous attend ce Jeudi 7 Janvier autour du thème : “Développer au quotidien des applications accessibles sous Windows”.

Voici le programme pour vous convaincre que l’accessibilité est un sujet sur lequel il y a long à dire :

  • Accueil
  • 9h30 – 11h00
  • Pause
  • 11h15-12h30
  • Pause Déjeuner
  • 14h00-15h30
  • Pause
  • 15h45 – 17h30
  • Conclusion

Au niveau des sujets : création d’applications accessibles WPF, Silverlight, Web/ARIA, etc

image

Au niveau des intervenants, on ne change pas une équipe qui fonctionne à merveille :

image

Journée intense en transfert de connaissances et réflexion, alors n’hésitez pas à vous inscrire à cette conférence entièrement GRATUITE à cette adresse.

En espérant vous retrouver Jeudi autour d’un café !

[Open XML] Sortie et retour sur le SDK Open XML 2.0 CTP Décembre

Le SDK 2.0 en version CTP connait une nouvelle monture pour cette fin d’année et on pourrait presque prendre celle-ci comme le cadeau de noël de l’équipe Office. Car cette CTP est une vraie bonne nouvelle comme vous allez pouvoir le constater.

Vous pouvez télécharger le SDK Open XML 2.0 CTP Décembre à cette adresse.

Parmi les nouveautés et avancées de cette nouvelle version, nous pouvons voir l’émergence de la compatibilité avec Office 2010, qui de mon point de vue manquait à la précédente version : dans certains cas précis, lors de l’ouverture de certains documents édités avec la Beta d’Office 2010, le SDK 2.0 CTP d’Août lançait des exceptions en arguant que le document n’était pas valide. C’est maintenant chose résolue ! Ce support d’Office 2010 se trouve aussi bien au niveau des APIs avec de nouvelles capacités (d’où certaines parties supplémentaires dans la structure OPC, et donc de nouvelles classes au niveau des APIs) qu’au niveau de la validation des documents avec le SDK.

Un autre changement a également eu lieu, il s’agit de la séparation entre les APIs et les outils de productivité Open XML. Au lieu d’avoir un lieu unique comme ce fut le cas, vous trouverez maintenant deux liens : l’un pour télécharger les APIs et l’autre pour télécharger les outils de productivité.

image

Voici quelques détails supplémentaires pour chaque nouveauté.

Support d'Office 2010

Les nouvelles fonctionnalités d’Office 2010, rajoutés sous forme d’extension au format grâce aux capacités normés du format, sont contenues dans des espaces de nom .NET et XML différents. Vous trouverez ainsi des éléments propre à Office 2010 dans les espaces de nom DocumentFormat.OpenXml.Office2010.[Word|Excel|PowerPoint] tel que le montre la figure suivante :

image

Si vous cherchez une capacités propres à Office 2010 (Sparkline, effet de style, etc), c’est dans ces espaces de nom que vous devrez naviguer pour trouver votre bonheur !

La validation revue

La validation a été sortie de l’espace de nom original pour arriver dans un espace de nom propre DocumentFormat.OpenXml.Validation, ce qui entrainera des modifications dans vos codes existants. Du coup, les éléments ont été rendus obsolètes et seront probablement supprimés – comme le spécifie l’aide en ligne – dans les prochaines versions du SDK.

Les outils de productivité

Ce package d’outil, maintenant téléchargeable séparément, contient toujours les outils : Document Reflector, le Class Explorer et le Diff. Somme toute, ces trois outils portent bien leur nom d’outil de productivité tant une fois leur utilisation maîtrisé en développement se révèlent indispensable pour avancer vite et bien, mais aussi pour se débloquer de situations parfois complexes dans le travail avec le format. A la différence de la CTP d’Août, ces trois outils sont maintenant proposés au sein d’une interface unifiée avec onglet :

image

Le Document Reflector supporte aujourd’hui Office 2010 et sa validation. Le Diff quant à lui permet maintenant de générer un code de transformation d’un document vers un autre ! Par exemple, en ayant supprimé une table dans un en-tête de page, voici le une partie du code généré par l’outil pour passer du document original au document cible :

        private void ChangeHeaderPart1()
        {

            Header header1 = (UriPartDictionary["/word/header1.xml"] as HeaderPart).Header;
            Table table1 = header1.GetFirstChild<Table>();

            table1.Remove();
        }

 

Pour conclure, le SDK Open XML 2.0 s’embellie version après version aussi bien au niveau de sa compatibilité que des outils fournis. Une chose est sûre, le SDK Open XML est très attendu par les développeurs et surtout ceux qui testent depuis quelques semaines, comme moi, SharePoint 2010 Word Services (bientôt un article sur MSDN …). Une version finale qui attendra donc la sortie conjointe avec SharePoint 2010 ; en attendant on ne peut que souhaiter que l’équipe en charge continue l’excellent travail qu’elle a entreprise.

Au niveau de la migration de votre code, certaines méthodes ont été revues, ce qui devrait vous valoir de reprendre certains de vos codes. Par exemple, le paramètre autosave de la méthode Open a été remplacé par un objet OpenSettings, ce qui représente à mes yeux une amélioration au niveau de la cohérence des paramètres d’ouverture de document. Au delà de ces quelques renommages (méthodes – obsolètes ou supprimées – et espaces de nom – notamment sur les objets concernant la validation des documents), de remettre la référence vers la DLL (v 2.0.4725) et de différentes adaptations (certaines propriétés ont changé de type), la migration de vos solutions ne devraient pas être problématique.

[Open XML] Liens de la semaine 30/11/2009

Comme à mon habitude, voici une petite fournée des meilleurs liens Open XML, Office et maintenant SharePoint 2010 que j’ai glané au fil des derniers jours :

Bonne lecture

[Open XML] Manipuler un document Office 2007 côté serveur et les types MIME indispensables

Le SDK Open XML permet de pouvoir générer ou éditer des documents côté serveur à la volée et sans nécessité l’utilisation d’Office. Une première pour Microsoft qui vient d’être appuyé par Word Services inclus dans SharePoint 2010 (dont vous pouvez télécharger la Beta ici).

Si vous utilisez le format Open XML (.docx, .xlsx, .pptx) vous avez sûrement remarquer que la plupart des serveur Web vous retournent les documents sous la forme d’un zip (et ne vous propose donc pas de l’ouvrir avec Office). En effet la plupart des sites suggère d’utiliser le type MIME ‘x-zip-compressed’ pour ces types de documents Office à cause de l’utilisation de ce format pour stocker les différents éléments d’un document. Il est bien évident que c’est un non sens, surtout si vous voulez que les index des moteurs de recherche puisse interpréter correctement le fichier en tant que document et non comme une simple archive compressée.  Vous me direz que les moteurs de recherche utilisent l’extension pour déterminer la nature du document, sauf que si l’URL de téléchargement se présente sous la forme “/download.aspx?id=12345” et que l’entête filename n’est pas renseignée, l’index ouvrira le document et indexera le contenu de votre document sous sa forme XML. Le type de contenu MIME devient donc la seule source d’information que l’index ou le système possède pour ouvrir de façon décente le document.

Voici la liste des types de contenu pour Office 2007 sans macro :

"application/vnd.openxmlformats-officedocument.wordprocessingml.document" (.docx)
"application/vnd.openxmlformats-officedocument.wordprocessingml.template" (.dotx)
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" (.xlsx)
"application/vnd.openxmlformats-officedocument.spreadsheetml.template" (.xltx)
"application/vnd.openxmlformats-officedocument.presentationml.presentation" (.pptx)
"application/vnd.openxmlformats-officedocument.presentationml.template" (.potx)
"application/vnd.openxmlformats-officedocument.presentationml.slideshow" (.ppsx)

Voici les types pour les documents comportant des macros :

"vnd.ms-word.document.macroEnabled.12"
"vnd.ms-word.template.macroEnabled.12"
"vnd.ms-powerpoint.template.macroEnabled.12"
"vnd.ms-powerpoint.addin.macroEnabled.12"
"vnd.ms-powerpoint.slideshow.macroEnabled.12"
"vnd.ms-powerpoint.presentation.macroEnabled.12"
"vnd.ms-excel.addin.macroEnabled.12"
"vnd.ms-excel.sheet.binary.macroEnabled.12"
"vnd.ms-excel.sheet.macroEnabled.12"
"vnd.ms-excel.template.macroEnabled.12"

Et pour terminer un peu de code ASP.Net pour télécharger un document Word :

Response.ClearHeaders();
Response.AddHeader("content-disposition", "attachment; filename=summary.docx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
Response.ClearContent();
… // Votre contenu
Response.Flush();
Response.Close();

Bon code !

Le format Open XML est enfin dans le Référentiel Général d’Interopérabilité

Ca y est, c’est fait : le Référentiel d’Interopérabilité Général est !

Interérabilité pour quoi faire ?

Voici les 10 bénéfices énoncés de l’intérêt de ce RGI :

  1. Améliorer la qualité des services fournis aux administrés
  2. Promouvoir les services en ligne en réduisant les délais de mise en oeuvre
  3. Maîtriser les coûts de développement et de maintenance
  4. Favoriser l'interopérabilité des systèmes d’information en respectant l’autonomie des acteurs
  5. Contribuer à l’ouverture des systèmes d’information dans leur écosystème (relations avec les citoyens et les entreprises et avec d’autres organismes publics)
  6. Adopter un langage et une sémantique communs lors des échanges d’information
  7. Diffuser les bonnes pratiques entre administrations européennes et converger vers un cadre d’interopérabilité commun
  8. Favoriser l’intégration et guider les administrations dans leurs choix de solutions
  9. Garantir la neutralité de l’administration en s’appuyant sur des normes et standards
  10. Favoriser la standardisation et l’innovation

Bons je vous l’accorde, de mon opinion, la description contenue dans le RGI – ici non incluse - de certains des objectifs est quelquefois un peu fumeuse et assez éloigné de la réalité technique, mais la bonne volonté est là. De plus on y retrouve l’essence même de tout RGI : échangeons ensemble !

N’oublions pas qu’il ne s’agit que de recommandations, en rien d’obligations. L’extrait du RGI est d’ailleurs assez éloquent à ce sujet : “Ces recommandations constituent les objectifs à atteindre pour favoriser l'interopérabilité. Les moyens d'y parvenir sont à la discrétion des responsables des SI de l'administration, en fonction de leurs propres enjeux, de leur planning et du rapport entre le coût de mise en oeuvre et les bénéfices attendus.”

De l’Open XML et OpenDocument dans le RGI

Les deux formats de documents bureautique sont cités dans le RGI, alors que seul OpenDocument dans sa version 1.1 l’était dans sa version brouillon de 2007. Les deux formats sont notés ‘En observation’ et ne sont donc pas encore des recommandations.

Pour OpenDocument, la raison est que la version 1.2 est toujours en cours de normalisation … depuis fin 2006 (!) et corrige enfin les problèmes critiques techniques et d’interopérabilité du format (Accessibilité, Formules et Métadonnées notamment). Le RGI indique une normalisation en 2009, mais il y a bien peu de chances que ce dernier soit ratifié avant 2010. Un format ISO – version 1.1 donc - qui commence à dater et qui ne respect pas vraiment les principes d’un format de document bureautique innovant et permettant de combler certains besoins essentiels que l’on peut attendre d’un document bureautique en 2009.

Concernant Open XML, l’argument avancé est que la version ISO – IS 29500 – n’est pas implémentée. C’est notamment Office 2010 qui inaugurera son arrivée sur le marché, sachant que la version ECMA est déjà implémentée depuis Office 2007 avec un support en lecture dans OpenOffice 3.0 et en écriture dans la future monture 3.2. So wait and see ! (Attention, le RGI fait sûrement référence à la version Stricte et non Transitionnelle, enfin ce sera sûrement une précision apporter lors de la prochaine révision du RGI).

Nuançons tout de même la réalité des deux formats dans la pratique. Autant la version ISO d’Open XML est ratifiée avec des implémentations en cours de réalisation de la part de plusieurs acteurs du marché, jusque là tout va bien. Autant OpenOffice implémente une norme qui n’est pas encore validée et qui pourrait être modifiée au besoin par l’ISO (quid de la compatibilité avec les documents créés par OpenOffice dans une version 1.2 non ISO ?). C’était déjà le cas en 2006 où OpenDocument 1.0 n’était que le reflet du format OpenOffice et non issu d’un échange des experts dans le domaines des formats bureautiques.

Je vous laisse consulter ce fameux RGI.

[Open XML] Liens de la semaine 01/11/2009

Cela faisait un petit bout de temps que je n’avais pas mis à disposition la liste des derniers liens dans le domaine de d’Open XML, d’Office 2010 ou encore de SharePoint, voici de quoi me rattraper :

Pour les développeurs de solutions Office de la vague 2010, voici le nouveau blog auquel vous devriez souscrire : celui de l’équipe de Word Services ! Voici le premier article qui explique les fondements de Word Services et comment exploiter le SDK Open XML avec ce nouveau service : Introduction de Word Services.

Bonne lecture

La recherche SharePoint MOSS : synthèse sur la syntaxe des requêtes par mots clés

Après de nombreux échanges sur la recherche avec de nombreuses personnes, voici un petit récapitulatif sur le fonctionnement et l’utilisation des requêtes par mots clés (par opposition aux requêtes Search SQL). Voici quelques exemples de saisie dans la boite de recherche

  • Un seul mot : par exemple collaboratif retournera tous les éléments contenant ce terme,
  • Plusieurs mots : par exemple collaboration travail retournera tous les éléments contenant collaboration ET travail. En effet, l’espace sera considéré comme un ET logique.
  • Une phrase : par exemple “travail collaboratif” retournera tous les éléments contenant exactement cette phrase,
  • L’utilisation des préfixes :
    • Il n’y pas de caractère joker tel que ‘*’, taper juste le début du mot et le moteur vous trouvera tous les éléments contenant en partie cette expression. Par exemple, collab retournera les documents contenant collaboration, collaboratif, collaborateur, etc
    • Exclusion d’un terme : utilisez le moins ‘-‘ dans votre requête, par exemple ‘-collaboratif’ pour exclure tous les éléments contenant collaboratif. Cet opérateur sera compris comme un NOT par le moteur de recherche.
    • Inclusion d’un terme : utiliser le plus ‘+’ dans votre requête, par exemple ’+collaboratif’ pour incluse tous les éléments contenant collaboratif. Néanmoins, étant donné que tous les termes sont transmis sous forme de ET, ce caractère est quelque peu dispensable …
    • Filtre sur une propriété : les propriétés indexées et dites “Managed properties” (que vous pouvez configurer dans le SSP) peuvent être utilisées dans la recherche comme critère selon la syntaxe suivante : :. Par exemple auteur:julien retournera tous les éléments créés par Julien.
      • L’utilisation du caractère Joker ‘*’ est ici permise, par exemple auteur:ju* retournera tous les documents créés par Julien, Justine, etc… En revanche, ce joker ne semble marché que sous la forme du préfixe (auteur:*ien ne revoie pas les éléments Julien, Aurélien, etc, de même pour auteur:*uli*. Heureusement que nous avons le Search SQL pour nous les développeurs qui permettent ce type de requête !). Sachez que le joker ‘*’ est en fait optionnel et que si vous saisissez auteur:ju, le résultat sera le même que auteur:ju*.
      • Pour limiter le nombre de résultat contenant le suffixe de votre requête, utiliser les guillemets, par exemple auteur:”ju”, pour ne retourner que les éléments dont l’auteur se nomme ju.
      • Filtre sur le type de contenu : même principe que pour la propriété mais en filtrant sur le type de contenu en utilisant la syntaxe suivante : contenttype:, par exemple contenttype:document pour ne demander que les documents.
      • Pour détecter la langue d’un élément, sachez que le moteur d’index utilise un algorithme déterminant la langue, et la place dans la propriété managé detectedlanguage. Ainsi la requête detectedlanguage:9 ramènera le contenu en anglais et detectedlanguage:12 pour retrouver le contenu en Françai. Reste que le moteur d’index (IFilter notamment) fait aussi quelques erreurs sur la langue …
      • Pour ne cibler qu’un seul site en particulier, utilisez la syntaxe site:
      • Pour ne filtrer que les types de documents d'une extension spécifique, utilisez la syntaxe fileextension:<extension>

Quelques précisions sur le comportement du moteur de recherche :

  • Notez que le moteur de recherche, par défaut, ne prend pas en compte la casse des mots, ainsi collaboratif et Collaboratif retourneront le même résultat.
  • Utilisation de filtres multiples : si vous utilisez plusieurs filtres différents, le moteur de recherche garde son comportement par défaut de ET logique concernant la relation entre les critères ou termes de recherche. Si vous utilisez plusieurs fois la même propriété, type de contenu ou scope de recherche dans votre requête, le moteur de recherche interprétera les éléments avec un OU. Par exemple, la requête auteur:julien contenttype:document collaboratif retournera tous les documents dont l’auteur est julien (prénom ou nom) contenant le terme collaboratif. Si vous spécifiez auteur:julien auteur:christian contenttype:document collaboratif, le moteur de recherche renverra tous les documents dont l’auteur est soit Julien, soit Christian, soit les deux, possédant un terme collaboratif.

Voilà pour le rappel de ces quelques règles élémentaires sur le fonctionnement du moteur de recherche de MOSS 2007, en attendant celles de “MOSS  2010” dans un prochain post.

[Open XML] Des code snippets pour le SDK Open XML v2

image

Avec l’arrivée prochaine d’Office 2010, l’évolution du SDK Open XML dans sa version 2 s’accélère et avance à grand pas. Alors que la CTP d’Août du SDK Open XML a été rendue disponible il y a peu, voici que Microsoft met maintenant à disposition des snippets de code, environ une cinquantaine.

Ces snippets en C# et VB.NET vous permettront de découvrir l’utilisation du SDK mais surtout de les utiliser dans vos projets de production afin de gagner en productivité. Et si le SDK Open XML v2 fait déjà gagner beaucoup de temps par rapport à sa première mouture, ces snippets accélèrent véritablement le temps de création des méthodes utilitaires !

Voici l’adresse de téléchargement : Code snippets Open XML SDK

Pour plus de détail vous pouvez consulter le post d’Erika ici.

[Interop] Inauguration de l’Interop Lab Microsoft

Interop et Open Source semblaient être deux mots opposés à Microsoft il y a encore pas si longtemps. La soirée d’inauguration du laboratoire d’interopérabilité de Microsoft qui s’est déroulée Jeudi 10 Septembre dernier a encore prouvée que ces trois termes étaient bien en harmonie.

Alfonso Castro, directeur de l’Interopérabilité chez Microsoft France, a réussi à réunir des personnes de Citrix, Red Hat, HP, Drupal, OpenOffice.org (enfin plutôt de l’AFUL), Novell, Bull, Soyatec (plugin Eclipse pour Silverligth), VMWare, etc autour de la même table. Belle prouesse pour un débat qui s’est déroulé sans accrochage, car on aurait pu s’attendre au pire de la part de certains intervenants ! Il y a bien évidemment quelques 'pics' de la part de certains qui sont venus colorés les propos du débat, mais les esprits étaient bien réunis autour du thème de l'interopérabilité.

Une fois ce débat passé (qui manquait à mon sens de matière sur la ‘conformité’ ), les intervenants se sont rendus disponibles et nous avons pu avoir de véritables discussions (l’utopie n’était pas loin parfois …) autour de petits fours et de rafraichissements (comme à son habitude, Microsoft sait recevoir, surtout dans les nouveaux bâtiments flambants neufs).

J’ai également eu le droit à une petite visite privée de la salle serveur du nouveau MTC (merci à toi Bertrand !). La voici de dehors (photo iPhone … piètre qualité ?), très design en plus d’avoir de véritables monstres de puissance dans ses armoires :

IMG_0195 

Bilan de la soirée, de grandes rencontres et discussions autour de l’Interopérabilité et le dernier train pour Lille raté … mais ça en valait vraiment le détour ! Les vidéos du débat devraient être disponibles sous peu.

[Open XML] Nouvelle version CTP du SDK Open XML 2.0 pour Microsoft Office

Une bonne nouvelle pour les personnes désirant générer ou consommer des documents Office dans son format Open XML : la 3ème CTP du SDK Open XML est enfin disponible !

Au programme des apports :

  • Support de la validation sémantique : valider les éléments sémantiques de l’arbre XML tel que les conflits d’identifiant ou les interdépendances.
  • Support des balises d’extensibilité/compatibilité : les mécanismes d’extensions (contenu à ignorer et bloc de contenu alternatif) et de compatibilité permettant à vos documents d’être compatible avec Office 2007 et 2010 !
  • Améliorations diverses basées sur les retours :
    • Sauvegarde automatique : chaque modification est enregistré automatiquement sans appeler la méthode Save(). Vous pourrez désactiver ce comportement.
    • Type booléen pour les attributs ‘booléens’ Open XML : certains attributs possèdent une valeur ST_OnOff avec les valeurs possibles suivantes : ‘On’, ‘Off’, ‘true’, ‘false’, ‘0’ et ‘1’ (oui je sais cela n’est pas très uniforme). Le SDK Open XML rend cela transparent en vous laissant spécifier un simple booléen C# ! Le SDK fera le nécessaire pour vous.
    • Etc

Un peu plus de détails sur la validation sémantique avec ce diagramme (issu du post de Zeyad) :

La validation sémantique permet d’aller au delà de la simple validation des XSD (qui possèdent des limitations dans les restrictions …). Par exemple comment valider le fait que deux identifiants d’un même élément ne soit pas identique dans toute la structure XML ? C’est le travail de la validation sémantique !

N’oubliez pas le lien de téléchargement : http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&DisplayLang=en

Pour rappel la version finale du SDK Open XML 2.0 sera disponible en même temps qu’Office 2010 … N’hésitez pas à envoyer vos feedbacks sur Connect.

Vous pouvez trouver les éléments de ce post et des détaisl supplémentaires sur le post de Zeyad.

Bon code !

[Open XML] OPC inclut en natif dans Windows 7

L'Open Packaging Convention a été introduit dans .NET 3.0 (et oui ça remonte un peu) comme structure interne des fichiers de documents bureautiques pour Office et le format XPS. Pour ceux qui ont déjà eux affaire à OPC, vous avez dû utiliser l'espace de nom System.IO.Packaging situé dans la DLL WindowsBase.

Aujourd'hui avec l'arrivée de Windows 7, l'équipe en charge d'OPC est fier d'annoncer - et moi de pouvoir utiliser - l'intégration en natif d'une API Win 32 dans Windows 7. Vous trouverez une comparaison des deux APIs (managé et native) à cette adresse et celle-ci.

[Open XML] Le SDK Open XML 2.0 : Introduction et développement – 2ème partie et fin

VI. Utiliser le SDK Open XML par la pratique

Les scénarios fonctionnels d’utilisation d’un tel SDK sont assez nombreux, cela peut aller de la simple génération de factures ou de rapports à l’extraction de données pour exportation dans une base de données. N’oublions pas les scénarios de conversion ou de manipulation de documents à la volée (formatage d’entreprise, suppression des données personnelles, etc).

Dans cet article nous allons voir ensemble les deux scénarios de base, à savoir la génération et la consommation de documents. Dans le premier cas, il s’agira d’un document Word, dans le second cas d’un document Excel.

Génération d’un document Word

La génération d’un document Word passe simplement par l’utilisation du modèle objet du SDK qui se révèle être très efficace et rapide pour cette tâche. Pour générer le document du code suivant, nous créons simplement deux parties : la partie principale (celle qui contient les paragraphes du document) et la partie de style (contenant l’ensemble des styles du document) :

using (WordprocessingDocument wordDoc =
WordprocessingDocument.Create("SampleDemo.docx",
DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
{
// Création d'une nouvelle partie de contenu
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();

// Création d'un nouveau paragraphe
Document mainDoc = new Document(
new Body(
new Paragraph(
new ParagraphProperties(
new ParagraphStyleId() { Val = "Title" }),
new Run(
new RunProperties(
new Italic()),
new Text("Bienvenue au SDK Open XML V2 !")))));

// Enregistrement de la partie
mainDoc.Save(mainPart);

// Création d'une nouvelle partie de style
StyleDefinitionsPart stylePart = mainPart.AddNewPart<StyleDefinitionsPart>();

Styles styles = new Styles(
new Style(
new Name() { Val = "Title" },
new BasedOn() { Val = "Normal" },
new NextParagraphStyle() { Val = "Normal" },
new LinkedStyle() { Val = "TitleChar" },
new UIPriority() { Val = 10 },
new PrimaryStyle(),
new Rsid() { Val = "002C2DBE" },
new ParagraphProperties(
new ParagraphBorders(
new BottomBorder() { Val = BorderValues.Single, Color = "auto", Size = (UInt64)4UL, Space = (UInt64)1UL }),
new SpacingBetweenLines() { Line = 240, LineRule = LineSpacingRuleValues.Auto },
new ContextualSpacing()),
new RunProperties(
new RunFonts() { AsciiTheme = ThemeFontValues.MajorHighAnsi, HighAnsiTheme = ThemeFontValues.MajorHighAnsi, EastAsiaTheme = ThemeFontValues.MajorEastAsia, ComplexScriptTheme = ThemeFontValues.MajorBidi },
new Spacing() { Val = 5 },
new FontSize() { Val = (UInt64)52UL },
new FontSizeComplexScript() { Val = (UInt64)52UL })
) { Type = StyleValues.Paragraph, StyleId = "Title" });
// Enregistrement des styles
styles.Save(stylePart);
}

Comme énoncer précédemment, l’utilisation du SDK Open XML v2 nécessite une connaissance du format. Chaque classe utilisée dans le code précédent représente un élément ou un attribut XML qu’il vous faudra connaître pour exploiter le format à son maximum.

L’exécution de l’application permettra de générer un document que vous ouvrirez sans aucun problème dans Office 2007 ou Open Office 3.0.

image

Utilisé parallèlement avec Linq et les nouvelles fioritures de la nouvelle syntaxe de C# 3, la productivité des développeurs atteindra son apogée dans ce genre de projet.

Consommer un document Excel

Attaquons nous maintenant à la discipline inverse de la précédente partie, c'est-à-dire, la consommation de données d’un document Open XML.  L’exemple qui suit procède à l’extraction des données d’un document Excel en utilisant le SDK et un peu de Linq.

static WorksheetPart ObtenirPartieFeuille(WorkbookPart classeur, string nomFeuille)
{

try {

Sheet feuille = classeur.Workbook.Descendants<Sheet>()

.Where(s => nomFeuille.Equals(s.Name)).First();

return (WorksheetPart)classeur.GetPartById(feuille.Id);

}

catch (Exception) {

return null;

}

}

static Cell ObtenirCellule(WorksheetPart feuille, int indexLigne, int indexColonne)

{

try {

Row row = feuille.Worksheet.Descendants<Row>()

.Where(r => indexLigne == r.RowIndex).First();

return (Cell)row.ChildElements.ElementAt(indexColonne);

}

catch (Exception) {

return null;

}

}

static string ObtenirValeurCellule(Cell cellule, SharedStringTablePart sharedStringTablePart)

{

if (cellule.ChildElements.Count == 0)

return null;

string value = cellule.CellValue.InnerText;

if ((cellule.DataType != null) && (cellule.DataType == CellValues.SharedString))

value = sharedStringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;

return value;

}

static void Main(string[] args)

{

using (SpreadsheetDocument excelDoc = SpreadsheetDocument.Open("Sample.xlsx", false))

{

WorksheetPart feuille1 = ObtenirPartieFeuille(excelDoc.WorkbookPart, "Sheet1");

Cell cA1 = ObtenirCellule(feuille1, 1, 0); // Ligne 1, première colonne (base 0)

Cell cA2 = ObtenirCellule(feuille1, 2, 0); // Ligne 2, première colonne (base 0)

Console.WriteLine("{0} {1}", ObtenirValeurCellule(cA1, excelDoc.WorkbookPart.SharedStringTablePart), ObtenirValeurCellule(cA2, excelDoc.WorkbookPart.SharedStringTablePart));

}
}

Le SDK v2 rend la consommation d’un document Open XML aussi aisée que la génération. Les classes typées du SDK répondent à la logique de Linq to XML et elles vous permettront d’écrire du code de façon productive et intuitive sans vous égarer dans les méandres techniques de la sérialisation/désérialisation XML.

A l’instar de l’exemple sur la génération du document Word, il vous faudra connaître les bases de la structure d’un document pour être à même de récupérer les données voulues. Par exemple, dans le cas d’un document Excel, vous devez savoir que les valeurs de type chaines sont contenues dans une partie indépendante qui indexe toutes les chaines de votre classeur afin d’en optimiser le stockage.

image

image

VII. Conclusion

La création de documents bureautiques Office n’a jamais été aussi simple avant l’arrivée du SDK v2. Cette version devrait apporter aux développeurs de la productivité et de la simplicité dans la manipulation de documents Office, et cela, quelques soit le format utilisé (Word, Excel ou PowerPoint). Les nombreux outils annexés avec cette version du SDK assureront également deux objectifs : le premier de formation et le second d’accroitre encore votre productivité.

Cette version du SDK, bien qu’encore en CTP, est relativement stable et performante et mérite que l’on y prête attention pour les projets à venir. Néanmoins, son statut de CTP vous empêchera de la déployer dans vos projets clients pour le moment. Il faudra sûrement attendre la sortie du SP2 d’Office 2007 ou de Office « 14 » pour savourer la fraîcheur de cette librairie qui n’augure que de bonnes choses pour les documents Office dans les années à venir.

Egalement, n’oubliez pas de rejoindre la communauté Connect sur le site associé au SDK (https://connect.microsoft.com/site/sitehome.aspx?SiteID=589) afin de déposer vos feedbacks, vos bugs, etc et de contribuer à son amélioration.

VIII. Références

· Téléchargement du SDK Open XML v1 : http://go.microsoft.com/fwlink/?LinkId=120908

· Téléchargement du SDK Open XML v2 : http://go.microsoft.com/fwlink/?LinkId=127912

· Documentation du SDK en ligne : http://msdn.microsoft.com/en-us/library/bb448854(office.14).aspx

· Forum MSDN du SDK : http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1647&SiteID=1

· Site Connect du SDK : https://connect.microsoft.com/site/sitehome.aspx?SiteID=589

· Blog personnel de l’auteur majoritairement dédié à Open XML : http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1647&SiteID=1

 

Bon code !

[Open XML] Le SDK Open XML 2.0 : Introduction et développement – 1ère partie

La vague Office 2010 est en train de gagner du terrain avec la mise à disposition des premières Beta aux testeurs et développeurs. Le format Open XML continue bien évidemment à être une pièce centrale de la future suite bureautique de Microsoft. D’ailleurs, le SDK Open XML v2 toujours en CTP depuis plus d’une année devrait s’imposer comme aussi un composant centrale dans la diffusion des documents Office en offrant la possibilités aux applications web/client de pouvoir générer ou consommer des documents … sans Office !

Voici un petit article, diffusé il y a quelques mois dans le magazine Programmez que je vous propose de découvrir ou redécouvrir le SDK Open XML v2.

Plus que tout autre type de documents numériques, les documents bureautiques (Word, Excel et PowerPoint) prennent une place de plus en plus importante dans la vie des entreprises et de ses employés. Souvent vecteur ou source d’informations multi format : texte, feuille de calculs ou encore présentation, ces fichiers représentent et stockent souvent une grande partie du savoir d’une entreprise. Le format de documents bureautiques Open XML issu originellement du savoir-faire de Microsoft en la matière, avant de devenir une norme internationale ISO en 2008, propose justement une structure fiable et flexible pour échanger et véhiculer la majorité des informations du quotidien.

Dans cet article, nous allons parcourir ensemble le SDK Open XML, dans sa deuxième version, afin de mieux comprendre comment aborder les projets utilisant le format Open XML et les outils mis à la disposition des développeurs avec cette nouvelle monture.

Prérequis :

  • Visual Studio 2008 SP1
  • .NET 3.5 SP1
  • SDK Open XML v2 CTP (lien en fin d’article)

Pour préparer la lecture de cet article, vous pouvez consulter les articles suivants :

I. Pourquoi un SDK Open XML v2 ?

L’arrivée de .NET 3.0 avait amené une première solution pour manipuler les documents Open XML, du moins au niveau de sa structure Open Packaging Convention, avec l’espace de nom System.IO.Packaging. La sortie du SDK Open XML, première version, allait un cran au-delà en proposant une encapsulation de la couche structurelle OPC des documents Open XML et en offrant un ensemble de classes typées pour chaque partie d’un document.

Cependant, cette première version présentait toujours la même limitation qu’avec System.IO.Packaging ; le fait qu’il fallait toujours manipuler le contenu XML des parties en lisant les spécifications.

Cette nouvelle version du SDK Open XML va quant à elle beaucoup plus loin, car elle offre une totale abstraction – bien qu’elle ne bloquera les plus experts d’entre vous qui désireraient créer le XML eux-mêmes – quand à la structure et au contenu en exposant un modèle objet complet de classes et d’énumération. La majorité des développeurs ne devrait plus trouver d’excuses pour ne pas générer ou à consommer des documents Office sur un serveur ou un client … sans Office !

En effet dans un effort de toujours rendre plus productif les développeurs, Microsoft n’a cessé depuis de fournir aux développeurs des outils pour créer ou consommer des documents Office ; et cela sans nécessiter aucune instance d’Office sur la machine hôte. C’était déjà une réalité avec la sortie de .NET 3 et l’espace de nom System.IO.Packaging, puis la sortie de la première version du SDK Open XML ; aujourd’hui Microsoft frappe fort à nouveau et confirme son engagement envers cette norme de documents bureautiques avec la sortie du SDK Open XML v2.

Le SDK Open XML v2 encapsule la partie structurelle du fichier – organiser selon la spécification Open Packaging Convention - et la structure XML des différentes parties d’un document dans un modèle objet simple et flexible à manipuler. Ceci dit, comment cela se traduit-il en pratique ? Un exemple étant plus parlant qu’un long discours, et pour vous faire une idée rapidement, voici le code nécessaire à un développeur pour créer un document Word entièrement fonctionnel avec le SDK v2 :

using (WordprocessingDocument package = WordprocessingDocument.Create(docName, WordprocessingDocumentType.Document))
{
// Ajouter une partie de contenu au document
package.AddMainDocumentPart();

// Créer le contenu de votre document
package.MainDocumentPart.Document =
new Document( 
new Body( 
new Paragraph( 
new Run( 
new Text("Hello World !")))));

 
// Enregistrer le contenu dans le document
package.MainDocumentPart.Document.Save();
}

La création de document bureautique n’a jamais été aussi simple ! Le SDK Open XML v2 gérera lui-même pour vous toutes les opérations de génération ou de manipulation de la structure XML et OPC. Pour résumer, vous pouvez manipuler entièrement un document grâce au modèle objet sans avoir jamais à créer vous-même une quelconque structure XML. Par rapport aux précédents SDK ou librairies disponibles, cette approche simplifie à l’extrême la vie des développeurs.

Deux manipulations sont nécessaires de votre part pour utiliser le SDK Open XML v2 : télécharger la CTP du SDK Open XML (cf lien en fin d’article) et ajouter la référence aux DLLs WindowsBase et DocumentFormat.OpenXml à votre projet.

image

Notez que le SDK supporte très bien la programmation avec Linq To XML – comme nous le verrons par la suite - qui permet de requêter ou de construire une structure XML très simplement et rapidement. Côté performance, notez qu’il vous faudra moins de 3 secondes pour générer 1000 documents avec le code précédent sur une machine standard.

Notez que le SDK supporte très bien la programmation avec Linq To XML – comme nous le verrons par la suite - qui permet de requêter ou de construire une structure XML très simplement et rapidement. Côté performance, notez qu’il vous faudra moins de 3 secondes pour générer 1000 documents avec le code précédent sur une machine standard.

II. Quelques mots supplémentaires sur le SDK

Le SDK a été conçu pour être mis à disposition en version fonctionnelle successive (l’équipe itère sur l’aspect fonctionnel du SDK plutôt que sur l’amélioration des fonctionnalités existantes) :

  1. Version 1.0 – permet la manipulation directe des documents Open XML au niveau des parties.
  2. Version 2.0 – fournie des classes fortement typées pour manipuler le contenu des parties

Le SDK Open XML v2 permettra aussi de valider des documents Open XML existants ou ceux que vous avez composé. Néanmoins soyez conscient que le modèle objet proposé ici n’est pas un remplaçant du modèle objet d’Office tel qu’on le retrouve dans VSTO, et que vous devez néanmoins connaître la structure générale des fichiers Open XML. Dans la même logique, ce SDK a été conçu uniquement pour manipuler le format Open XML, par conséquent n’espérez pas y trouver de convertisseurs (vers HTML, XPS, doc, etc), ni de validateur si vous manipulez directement le XML sous jacent sans passer par l’API ou encore d’outils fonctionnels (recalcul de feuille Excel, pagination d’un document Word, etc). Cette version est encore en Community Technology Preview et ne pourra être déployé dans des solutions d’entreprise avant le « Go Live » de l’éditeur.

III. Un remplaçant pour Office Automation

La réponse n’est pas tranchée, puisque cela dépendra pour beaucoup du scénario que vous devez reproduire. Néanmoins, une chose est sûre : pour générer ou extraire des données d’un document, Office Automation n’est plus la meilleure solution ! En effet, ceux qui déjà créer des solutions à base d’Office Automation sur un serveur se rappelleront sûrement des recommandations de la KB suivante : http://support.microsoft.com/kb/257757.

Les avantages d’utiliser le SDK Open XML sur un serveur sont nombreux : sécurité, performance, stabilité, montée en charge, etc. Vous pouvez donc maintenant créer des solutions stables et capable de montée en charge dans des environnements multithread/multicore ou répartis. Le fait de ne pas avoir d’instance d’Office vous offrira également toute la mémoire et le la puissance processeur nécessaire pour réaliser vos tâches et uniquement celles-ci. Le rapport de performance entre l’utilisation de Office Automation et le SDK Open XML peut varier de 100 à plus de 1000 fois plus rapide pour le SDK Open XML v2.

Vous l’aurez compris, le SDK Open XML peut sans aucun doute se prévaloir du titre de remplaçant d’Office Automation pour les scénarios de génération, de consommation et de manipulations de fichiers Office.

IV. Ce que n’est pas le SDK Open XML

Cependant attention, le SDK Open XML n’est pas un couteau Suisse multifonction auquel nous pouvons tout demander. Il est donc nécessaire de vous communiquer quelques points où le SDK Open XML n’est pas à l’aise ou tout simplement pas fait pour :

  • Le SDK n’est pas un remplacement du modèle objet d’Office (VBA ou VSTO),
  • Le SDK ne fourni pas une abstraction placée au dessus du format de fichier, vous manipulez le format Open XML, vous devrez donc en connaître les rudiments essentiels pour utiliser le SDK,
  • Le SDK n’est pas un outil pour convertir les formats entre eux (Open XML vers HTML, XPS vers Open XML, etc - à vous de les développer),
  • Le SDK n’est pas capable de valider un document si vous modifiez vous-même le XML des parties sans passer par le modèle objet du SDK (en soit, c’est déjà une excellente chose que vous ayez accès au XML sous-jacent, et cette possibilité est étudié pour les versions futures),
  • Le SDK ne fournie pas d’outils fonctionnels (pagination de documents Word, recalcul des formules dans un document Excel, fusion de présentation PowerPoint, etc).

V. Les outils livrés avec le SDK

Un SDK livré sans outil complémentaire n’en étant pas vraiment un, sachez que cette version du SDK s’accompagne d’une documentation et de plusieurs outils. Leur seul but est d’épauler les développeurs dans leur apprentissage et l’utilisation au jour le jour du SDK. Voici un détail de chaque outil apporté par la version disponible lors de la rédaction de cet article.

OpenXml Diff

Ce premier outil vous permettra de faire la différenciation entre le contenu de deux documents Open XML. Cela a son intérêt lorsque vous générez des documents, si ceux-ci ne s’ouvre pas ou n’affiche pas ce que vous espériez. Il vous suffira alors de les comparer à une version qui s’ouvre, par exemple générer par Office, pour savoir ce que vous devrez modifier dans votre solution de génération de documents Open XML.

image

Le Class Explorer

Cet outil est une documentation à part entière dans lequel vous pourrez chercher les classes et les énumérations proposées par le SDK. En face de chaque classe, vous trouverez la section de la spécification Open XML de l’ECMA ainsi que la documentation MSDN de la classe.

image

Le Document Reflector

Cet outil est la Rolls des outils de ce SDK puisqu’il permettra aussi bien aux débutants qu’aux experts de pouvoir générer le code de génération d’un document complet, que ce soit un document Word, Excel ou PowerPoint. En effet, il vous suffira d’ouvrir un document avec cet outil, et il générera pour vous l’intégralité du code C# utilisant le SDK Open XML v2 pour générer à l’identique le document ainsi ouvert.

En plus de proposer cette fonctionnalité qui devrait augmenter la productivité des développeurs de façon conséquente, cet outil permet aussi de prendre connaissance du XML de chaque partie ou des éléments du document (paragraphe, cellule, diapositive, etc).

image

 

La suite de cet article très rapidement disponible sur mon blog. Bonne lecture !

[Open XML] Les liens de la semaine 27/07/09

En cette période estivale, je continue à vous relayer les meilleures articles sur Open XML :

Bonne lecture et bon week end !

[Open XML] Manipuler des documents Open XML avec OpenXML4J sur Android c’est possible !

En 2006, je débutais un projet open source autour d’Open XML, le projet OpenXML4J, pour exploiter un format déjà plein de promesses (tenues aujourd’hui). 3 ans plus tard, le projet OpenXML4J est intégré au projet POI, projet open source qui a déjà soufflé bon nombre de bougies et reconnu, qui permet aux développeurs Java de manipuler des documents Office, et notamment Excel, directement en Java.

Avec le succès et la notoriété toute jeune de la plateforme Android, je me suis bien évidemment posé la question : est-ce que les développeurs Android peuvent utiliser OpenXML4J pour développer des applications ???

Voici la réponse :

image

Et la récupération des informations depuis une applications Android :

image

Voici le code utilisé pour récupérer les propriétés d’un document Open XML avec OpenXML4J :

try {
            Package p = Package.open(inStream);

            StringBuffer sb = new StringBuffer();

            PackageProperties props = p.getPackageProperties();
            sb.append("Title: " + props.getTitleProperty().getValue());
            sb.append("\nCreator: " + props.getCreatorProperty().getValue());
            sb
                    .append("\nCreation date: "
                            + props.getCreatedProperty().getValue());
            sb.append("\nStatus: " + props.getContentStatusProperty().getValue());

            p.revert();
        } catch (Exception e) {
            return "Une erreur s'est produite :(";
        }

Attention : la version d’OpenXML4J utilisée dans le cadre de ce projet Android est une version modifiée !!!!

En effet, si la librairie OpenXML4J est tout à fait compatible avec Android, sa dépendance envers DOM4J et Log4J l’handicape. Pour rendre la librairie OpenXML4J compatible avec la plateforme Android j’ai dû :

  • Supprimer la dépendance vers Log4J en modifiant ou supprimant tous les appels à cette librairie,
  • Modifier les méthodes de parsing des différents éléments OPC du package du document Open XML pour utiliser les APIs DOM standard au lieu de DOM4J (il reste encore les méthodes d’enregistrement à compléter, chose qui devrait être faites prochainement),
  • Alléger quelques méthodes de vérification de la conformité du package à la spécification du standard pour amélioration la performance.

La remarque sur les performances est ici importante car nous parlons d’un environnement mobile et donc d‘une puissance de calcul limitée. A l'origine, OpenXML4J n’a été pensé et conçu pour s’exécuter sur ce type de plateforme. OpenXML4J en environnement mobile possède donc une grande marge d’amélioration quant aux performances …

Pour le moment seuls les documents d’Office 2007 semblent fonctionner avec OpenXML4J, j’espère pouvoir arranger la compatibilité avec les documents Office 2010 avant la sortie de la suite bureautique.

Les sources modifiées ainsi que celles de l’application de démonstration sont à disposition sur le SVN du projet OpenXML4J hébergé sur sourceforge.net dans la branche Android du projet (https://openxml4j.svn.sourceforge.net/svnroot/openxml4j/branch/android).

Plus d’info sur le site officiel : www.openxml4j.org et http://sourceforge.net/projects/openxml4j/

Bug des accents PowerPoint 2010, une première solution

Pour les utilisateurs et les chanceux testeurs de la suite Office 2010 Technical Preview, un bug dans la PowerPoint 2010 devrait vous gêner :

image

En effet les accents sont remplacés par des signe supérieur. Voici comment contourner ce problème :

Options > Proofing > Autoformat As You Type > décochez la case ‘Straight quotes’ with ‘smart quotes’

image

Ca devrait rentrer dans l’ordre (merci à Julie R.de MCS pour cette astuce).

[Open XML] Liens de la semaine 21/07/09

Faute d’avoir le temps de vous proposer des posts conséquents sur le sujet, voici les meilleurs liens techniques et d’annonces sur le format Open XML. L’arrivée de Office 2010 – et donc de l’approche d’une prochaine version du SDK Open XML ? - n’est sûrement pas innocent dans la recrudescence du volume d’article lui étant dévolu.

Les liens techniques pour les développeurs :

Les divers (mais important !) :

Les nouvelles de la normalisation ISO :

Dans la catégorie “les liens divers vers d’autres liens” :

On a parlé de Open XML :

Plus de Messages Page suivante »


Les 10 derniers blogs postés

- TechDays Paris 2010 : Déploiement de nouvelles technologies – Retour d’expérience par l’informatique de Microsoft par Blog Technique de Romelard Fabrice le il y a 1 heure et 17 minutes

- TechDays Paris 2010 : Plan de migration vers SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 5 heures et 0 minutes

- TechDays Paris 2010 : La pleinière du second jour par Blog Technique de Romelard Fabrice le il y a 6 heures et 5 minutes

- Visual Studio 2010 and .NET Framework 4 Release Candidate now available par Matthieu MEZIL le il y a 9 heures et 11 minutes

- Création d’une base de donnée sous SQL Azure par Le Blog (Vert) d'Arnaud JUND le il y a 10 heures et 8 minutes

- TechDays Paris 2010 : Les Services d’applications dans SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 20 heures et 7 minutes

- TechDays Paris 2010 : La GED et SharePoint 2010 par Blog Technique de Romelard Fabrice le 02-08-2010, 16:54

- TechDays Paris 2010 : SharePoint 2010 et Les réseaux sociaux par Blog Technique de Romelard Fabrice le 02-08-2010, 15:40

- TechDays Paris 2010 : SharePoint 2010 – Description et nouveautés par Blog Technique de Romelard Fabrice le 02-08-2010, 14:33

- TechDays Paris 2010 : Pleinière Lundi par Blog Technique de Romelard Fabrice le 02-08-2010, 14:30