[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 !
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :