Blog Map
[Blog Map] This blog is inactive. New blog: EricWhite.com/blog
This is one in a series of posts on transforming Open XML WordprocessingML to XHtml. You can find the complete list of posts here.
Whenever I write some Open XML SDK code that processes paragraphs based on style name, I need to retrieve the default style name for a document. It is pretty easy to do, but it always takes a small bit of time to remember / lookup the element and attribute names. Posting this code here so that I can save time next time I need to do this...
This code uses the utility types (preatomized XName objects and the GetXDocument extension method) in PtOpenXmlUtil.cs, which you can find in HtmlConverter.zip under the downloads section at CodePlex.com/PowerTools.
using System;using System.Collections.Generic;using System.IO;using System.Xml.Linq;using DocumentFormat.OpenXml.Packaging;using OpenXmlPowerTools;class Program{ static void Main(string[] args) { byte[] byteArray = File.ReadAllBytes("Test.docx"); using (MemoryStream memoryStream = new MemoryStream()) { memoryStream.Write(byteArray, 0, byteArray.Length); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(memoryStream, true)) { string defaultParagraphStyleId = wordDoc .MainDocumentPart .StyleDefinitionsPart .GetXDocument() .Root .Elements(W.style) .Where(e => (string)e.Attribute(W.type) == "paragraph" && (string)e.Attribute(W._default) == "1") .Select(s => (string)s.Attribute(W.styleId)) .FirstOrDefault(); Console.WriteLine(defaultParagraphStyleId); } } }}