Créer un package
Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin de créer par programme un package de document de traitement de texte à partir de contenu sous forme de WordprocessingML
balisage XML.
Packages et composants Document
Un document Open XML est stocké sous forme de package, dont le format est défini par la norme ISO/IEC 29500. Le package peut contenir plusieurs parties avec des relations entre elles. La relation entre les parties détermine la catégorie du document. Un document peut être défini comme un document de traitement de texte si son élément de relation de package contient une relation avec une partie principale de document. Si son élément de relation de package contient une relation avec une partie de présentation, il peut être défini comme un document de présentation. Si son élément de relation de package contient une relation avec une partie de classeur, il est défini en tant que feuille de calcul. Dans cette rubrique, vous utiliserez un package de documents de traitement de texte.
Obtention d’un objet WordprocessingDocument
Dans le Kit de développement logiciel (SDK) Open XML, la WordprocessingDocument classe représente un package de document Word. Pour créer un document Word, vous créez un instance de la WordprocessingDocument classe et le remplissez avec des parties. Au minimum, le document doit avoir un composant de document principal qui sert de conteneur pour le texte principal du document. Le texte est représenté dans le package au format XML à l’aide d’un WordprocessingML
balisage.
Pour créer la classe instance vous appelez Create(String, WordprocessingDocumentType). Plusieurs Create méthodes sont fournies, chacune avec une signature différente. Le premier paramètre prend une chaîne de chemin d'accès complet qui représente le document que vous souhaitez créer. Le deuxième paramètre est un membre de l’énumération WordprocessingDocumentType . Ce paramètre représente le type de document. Par exemple, il existe un membre différent de l’énumération WordprocessingDocumentType pour chaque document, modèle et la variété de document et de modèle activée par la macro.
Remarque
Sélectionnez soigneusement le fichier approprié WordprocessingDocumentType et vérifiez que le fichier persistant a l’extension de fichier correspondante correcte. Si ne correspond pas à WordprocessingDocumentType l’extension de fichier, une erreur se produit lorsque vous ouvrez le fichier dans Microsoft Word.
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
Avec v3.0.0+ la Close() méthode a été supprimée au profit de l’instruction using.
Il garantit que la Dispose() méthode est automatiquement appelée lorsque l’accolade fermante est atteinte. Le bloc qui suit l’instruction using établit une étendue pour l’objet créé ou nommé dans l’instruction using. Étant donné que la WordprocessingDocument classe du Kit de développement logiciel (SDK) Open XML enregistre et ferme automatiquement l’objet dans le cadre de son IDisposable implémentation, et que Dispose() est appelée automatiquement lorsque vous quittez le bloc, vous n’avez pas à appeler Save() explicitement ou Dispose() tant que vous utilisez une using
instruction.
Une fois le package de document Word créé, vous pouvez y ajouter des composants. Pour ajouter le composant de document main que vous appelez AddMainDocumentPart. Après cela, vous pouvez ajouter la structure de document et le texte.
Structure d’un document WordProcessingML
La structure de base d’un WordProcessingML
document se compose des document
éléments et body
, suivis d’un ou plusieurs éléments de niveau bloc tels que p
, qui représente un paragraphe. Un paragraphe contient un ou plusieurs r
éléments. l’acronyme r
de run, qui est une région de texte avec un ensemble commun de propriétés, telles que la mise en forme. Une exécution contient un ou plusieurs t
éléments. L’élément t
contient une plage de texte. L’exemple de code suivant montre le WordprocessingML
balisage d’un document qui contient le texte « Exemple de texte ».
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p>
<w:r>
<w:t>Example text.</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
À l’aide du Kit de développement logiciel (SDK) Open XML, vous pouvez créer une structure de document et du contenu à l’aide de classes fortement typées qui correspondent à WordprocessingML
des éléments. Vous trouverez ces classes dans l’espace de noms . Le tableau suivant répertorie les noms de classes des classes qui correspondent aux document
éléments , body
, p
, r
et t
.
Élément WordprocessingML | Classe du Kit de développement logiciel (SDK) Open XML | Description |
---|---|---|
<document/> |
Document | Élément racine de la partie principale du document. |
<body/> |
Body | Conteneur des structures de niveau bloc, telles que paragraphs, tables, annotations et autres structures décrites dans la spécification ISO/IEC 29500. |
<p/> |
Paragraph | Paragraphe. |
<r/> |
Run | Exécution. |
<t/> |
Text | Plage de texte. |
Pour plus d’informations sur la structure globale des parties et éléments d’un document WordprocessingML, consultez Structure d’un document WordprocessingML.
Exemple de code
Voici l’exemple de code complet que vous pouvez utiliser pour créer un package de document de traitement de texte Open XML à partir de contenu XML sous forme de WordprocessingML
balisage.
Après avoir exécuté le programme, ouvrez le fichier créé et examinez son contenu . il doit s’agir d’un paragraphe contenant l’expression « Hello monde ! »
Voici un exemple de code complet en C# et Visual Basic.
// To create a new package as a Word document.
static void CreateNewWordDocument(string document)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
{
// Set the content of the document so that Word can open it.
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
SetMainDocumentContent(mainPart);
}
}
// Set the content of MainDocumentPart.
static void SetMainDocumentContent(MainDocumentPart part)
{
const string docXml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<w:document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">
<w:body>
<w:p>
<w:r>
<w:t>Hello World</w:t>
</w:r>
</w:p>
</w:body>
</w:document>";
using (Stream stream = part.GetStream())
{
byte[] buf = (new UTF8Encoding()).GetBytes(docXml);
stream.Write(buf, 0, buf.Length);
}
}