Below code works fine, and give us the STYLE properties. How can we fetch other properties also like - numbering, font size, italics/bold, indentation?
const string fileName = @"D:\DocFiles\Scan.docx"; const string documentRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; const string stylesRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; const string wordmlNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; XNamespace w = wordmlNamespace; XDocument xDoc = null; XDocument styleDoc = null; using (Package wdPackage = Package.Open(fileName, FileMode.Open, FileAccess.Read)) { PackageRelationship docPackageRelationship = wdPackage .GetRelationshipsByType(documentRelationshipType) .FirstOrDefault(); if (docPackageRelationship != null) { Uri documentUri = PackUriHelper .ResolvePartUri( new Uri("/", UriKind.Relative), docPackageRelationship.TargetUri); PackagePart documentPart = wdPackage.GetPart(documentUri); // Load the document XML in the part into an XDocument instance. xDoc = XDocument.Load(XmlReader.Create(documentPart.GetStream())); // Find the styles part. There will only be one. PackageRelationship styleRelation = documentPart.GetRelationshipsByType(stylesRelationshipType) .FirstOrDefault(); if (styleRelation != null) { Uri styleUri = PackUriHelper.ResolvePartUri(documentUri, styleRelation.TargetUri); PackagePart stylePart = wdPackage.GetPart(styleUri); // Load the style XML in the part into an XDocument instance. styleDoc = XDocument.Load(XmlReader.Create(stylePart.GetStream())); } } } string defaultStyle = (string)( from style in styleDoc.Root.Elements(w + "style") where (string)style.Attribute(w + "type") == "paragraph" && (string)style.Attribute(w + "default") == "1" select style ).First().Attribute(w + "styleId"); // Find all paragraphs in the document. var paragraphs = from para in xDoc .Root .Element(w + "body") .Descendants(w + "p") let styleNode = para .Elements(w + "pPr") .Elements(w + "pStyle") .FirstOrDefault() select new { ParagraphNode = para, StyleName = styleNode != null ? (string)styleNode.Attribute(w + "val") : defaultStyle }; // Retrieve the text of each paragraph. var paraWithText = from para in paragraphs select new { ParagraphNode = para.ParagraphNode, StyleName = para.StyleName, Text = ParagraphText(para.ParagraphNode) }; foreach (var p in paraWithText) { Response.Write(p.StyleName + " -" + p.Text); }