Ajouter un nouveau composant de document qui reçoit un ID de relation à un package
Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin d’ajouter un composant de document (fichier) qui reçoit un paramètre de relation Id
pour un document de traitement de texte.
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.
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.
Fonctionnement de l’exemple de code
L’exemple de code de cette procédure commence par passer un paramètre qui représente le chemin d’accès au document Word. Il crée ensuite un objet WordprocessingDocument dans une instruction using.
static void AddNewPart(string document)
{
// Create a new word processing document.
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
Il ajoute ensuite le composant MainDocumentPart au nouveau document de traitement de texte, avec l’ID de relation rId1. Il ajoute également le CustomFilePropertiesPart
composant et un CoreFilePropertiesPart
dans le nouveau document de traitement de texte.
// Add the MainDocumentPart part in the new word processing document.
MainDocumentPart mainDocPart = wordDoc.AddMainDocumentPart();
mainDocPart.Document = new Document();
// Add the CustomFilePropertiesPart part in the new word processing document.
var customFilePropPart = wordDoc.AddCustomFilePropertiesPart();
customFilePropPart.Properties = new DocumentFormat.OpenXml.CustomProperties.Properties();
// Add the CoreFilePropertiesPart part in the new word processing document.
var coreFilePropPart = wordDoc.AddCoreFilePropertiesPart();
using (XmlTextWriter writer = new XmlTextWriter(coreFilePropPart.GetStream(FileMode.Create), System.Text.Encoding.UTF8))
{
writer.WriteRaw("""
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" />
""");
writer.Flush();
}
Le code ajoute ensuite le DigitalSignatureOriginPart
composant, le ExtendedFilePropertiesPart
composant et le ThumbnailPart
composant dans le nouveau document de traitement de texte avec les ID de réalisation rId4, rId5 et rId6.
Remarque
La AddNewPart méthode crée une relation entre le composant de document actif et le nouveau composant de document. Cette méthode retourne le nouveau composant Document. En outre, vous pouvez utiliser la méthode pour remplir le composant de document.
Exemple de code
Le code suivant ajoute un nouveau composant Document qui contient du code XML personnalisé à partir d’un fichier externe, puis remplit le composant Document. Voici l’exemple de code complet en C# et Visual Basic.
static void AddNewPart(string document)
{
// Create a new word processing document.
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
{
// Add the MainDocumentPart part in the new word processing document.
MainDocumentPart mainDocPart = wordDoc.AddMainDocumentPart();
mainDocPart.Document = new Document();
// Add the CustomFilePropertiesPart part in the new word processing document.
var customFilePropPart = wordDoc.AddCustomFilePropertiesPart();
customFilePropPart.Properties = new DocumentFormat.OpenXml.CustomProperties.Properties();
// Add the CoreFilePropertiesPart part in the new word processing document.
var coreFilePropPart = wordDoc.AddCoreFilePropertiesPart();
using (XmlTextWriter writer = new XmlTextWriter(coreFilePropPart.GetStream(FileMode.Create), System.Text.Encoding.UTF8))
{
writer.WriteRaw("""
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" />
""");
writer.Flush();
}
// Add the DigitalSignatureOriginPart part in the new word processing document.
wordDoc.AddNewPart<DigitalSignatureOriginPart>("rId4");
// Add the ExtendedFilePropertiesPart part in the new word processing document.
var extendedFilePropPart = wordDoc.AddNewPart<ExtendedFilePropertiesPart>("rId5");
extendedFilePropPart.Properties = new DocumentFormat.OpenXml.ExtendedProperties.Properties();
// Add the ThumbnailPart part in the new word processing document.
wordDoc.AddNewPart<ThumbnailPart>("image/jpeg", "rId6");
}
}