VOOZH about

URL: https://www.gemboxsoftware.com/document/examples/c-sharp-vb-net-word-properties/211

⇱ Read and Write Word file properties in C# and VB.NET


Read and Write Word file properties in C# and VB.NET

The following example shows how you can read and write built-in and custom Word document properties (metadata), using the GemBox.Document API in your C# and VB.NET applications.

using GemBox.Document;
using System;

class Program
{
 static void Main()
 {
 // If using the Professional version, put your serial key below.
 ComponentInfo.SetLicense("FREE-LIMITED-KEY");

 var document = DocumentModel.Load("%InputFileName%");
 var documentProperties = document.DocumentProperties;

 Console.WriteLine("# Built-in document properties:");

 // Write built-in document properties.
 documentProperties.BuiltIn[BuiltInDocumentProperty.Title] = "My Title";
 documentProperties.BuiltIn[BuiltInDocumentProperty.DateLastSaved] = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ");

 // Read built-in document properties.
 foreach (var builtinProperty in documentProperties.BuiltIn)
 Console.WriteLine($"{builtinProperty.Key,20}: {builtinProperty.Value}");

 Console.WriteLine();
 Console.WriteLine("# Custom document properties:");

 // Write custom document properties.
 documentProperties.Custom["My Custom Property 1"] = "My Custom Value";
 documentProperties.Custom["My Custom Property 2"] = 123.4;

 // Read custom document properties.
 foreach (var customProperty in documentProperties.Custom)
 Console.WriteLine($"{customProperty.Key,20}: {customProperty.Value,-20} [{customProperty.Value.GetType()}]");
 }
}
Imports GemBox.Document
Imports System

Module Program

 Sub Main()

 ' If using the Professional version, put your serial key below.
 ComponentInfo.SetLicense("FREE-LIMITED-KEY")

 Dim document As DocumentModel = DocumentModel.Load("%InputFileName%")
 Dim documentProperties = document.DocumentProperties

 Console.WriteLine("# Built-in document properties:")

 ' Write built-in document properties.
 documentProperties.BuiltIn(BuiltInDocumentProperty.Title) = "My Title"
 documentProperties.BuiltIn(BuiltInDocumentProperty.DateLastSaved) = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ")

 ' Read built-in document properties.
 For Each builtinProperty In documentProperties.BuiltIn
 Console.WriteLine($"{builtinProperty.Key,20}: {builtinProperty.Value}")
 Next

 Console.WriteLine()
 Console.WriteLine("# Custom document properties:")

 ' Write custom document properties.
 documentProperties.Custom("My Custom Property 1") = "My Custom Value"
 documentProperties.Custom("My Custom Property 2") = 123.4

 ' Read custom document properties.
 For Each customProperty In documentProperties.Custom
 Console.WriteLine($"{customProperty.Key,20}: {customProperty.Value,-20} [{customProperty.Value.GetType()}]")
 Next

 End Sub
End Module
👁 Screenshot of document properties from a Word file
Screenshot of document properties from a Word file

Document properties contain some additional information and details about a file. It's also known as a Word file's metadata and can represent values like author, company, title, and subject. There are two types of document properties, BuiltIn and Custom.

Update Properties and Variables

The following example shows how you can update the document's properties and variables, and display their updated values with Field elements.

using GemBox.Document;
using System.Linq;

class Program
{
 static void Main()
 {
 // If using the Professional version, put your serial key below.
 ComponentInfo.SetLicense("FREE-LIMITED-KEY");

 var document = DocumentModel.Load("%#PropertiesAndVariables.docx%");

 // Update built-in and custom document properties.
 document.DocumentProperties.BuiltIn[BuiltInDocumentProperty.Title] = "Updated Title";
 document.DocumentProperties.Custom["Custom1"] = "Updated custom value 1!";
 document.DocumentProperties.Custom["Custom2"] = "Updated custom value 2!";

 // Update document variables.
 document.Variables["Variable1"] = "Updated variable value 1!";
 document.Variables["Variable2"] = "Updated variable value 2!";

 var fields = document.GetChildElements(true, ElementType.Field)
 .OfType<Field>()
 .Where(f => f.FieldType == FieldType.DocProperty || f.FieldType == FieldType.DocVariable);

 // Update DOCPROPERTY and DOCVARIABLE fields.
 foreach (var field in fields)
 field.Update();

 document.Save("UpdatedPropertiesAndVariables.%OutputFileType%");
 }
}
Imports GemBox.Document
Imports System.Linq

Module Program

 Sub Main()

 ' If using the Professional version, put your serial key below.
 ComponentInfo.SetLicense("FREE-LIMITED-KEY")

 Dim document = DocumentModel.Load("%#PropertiesAndVariables.docx%")

 ' Update built-in and custom document properties.
 document.DocumentProperties.BuiltIn(BuiltInDocumentProperty.Title) = "Updated Title"
 document.DocumentProperties.Custom("Custom1") = "Updated custom value 1!"
 document.DocumentProperties.Custom("Custom2") = "Updated custom value 2!"

 ' Update document variables.
 document.Variables("Variable1") = "Updated variable value 1!"
 document.Variables("Variable2") = "Updated variable value 2!"

 Dim fields = document.GetChildElements(True, ElementType.Field) _
 .OfType(Of Field)() _
 .Where(Function(f) f.FieldType = FieldType.DocProperty OrElse f.FieldType = FieldType.DocVariable)
 
 ' Update DOCPROPERTY and DOCVARIABLE fields.
 For Each field In fields
 field.Update()
 Next

 document.Save("UpdatedPropertiesAndVariables.%OutputFileType%")

 End Sub
End Module
👁 Screenshot of updated DOCPROPERTY and DOCVARIABLE fields
Screenshot of updated DOCPROPERTY and DOCVARIABLE fields

See also

Create Fields in Word documents using C# and VB.NET


Next steps

GemBox.Document is a .NET component that enables you to read, write, edit, convert, and print document files from your .NET applications using one simple API. How about testing it today?

Download Buy