Revision: 58139
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 28, 2012 00:07 by flowerking
Initial Code
internal static XNamespace w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
internal static void ImportTableStyles(string sourcefilepath, string destinationfilepath)
{
using (var repeaterSourceDocument = WordprocessingDocument.Open(sourcefilepath, true))
{
XDocument source_style_doc;
var repeaterSourceDocumentPackagePart = repeaterSourceDocument.MainDocumentPart.OpenXmlPackage.Package.GetPart(new Uri("/word/styles.xml", UriKind.Relative));
//Get styles.xml
using (TextReader tr = new StreamReader(repeaterSourceDocumentPackagePart.GetStream()))
source_style_doc = XDocument.Load(tr);
var tableStylesFromRepeaterSource = source_style_doc.Descendants(w + "style").Where(x => x.Attribute(w + "type").Value == "table").Select(x => x).ToList();
using (var targetFileToImportTableStyles = WordprocessingDocument.Open(destinationfilepath, true))
{
XDocument dest_style_doc;
var destpart = targetFileToImportTableStyles.MainDocumentPart.OpenXmlPackage.Package.GetPart(new Uri("/word/styles.xml", UriKind.Relative));
//Get styles.xml
using (TextReader trd = new StreamReader(destpart.GetStream()))
dest_style_doc = XDocument.Load(trd);
//Add all the style elements from source document styles.xml
foreach (var styleelement in tableStylesFromRepeaterSource)
{
if (!dest_style_doc.Elements(XName.Get("styles", w.NamespaceName)).Any(x => (string)x.Attribute("styleId") == (string)styleelement.Attribute("styleId")))
{
dest_style_doc.Element(XName.Get("styles", w.NamespaceName)).Add(styleelement);
}
}
//Save the style.xml of targetFile
using (TextWriter tw = new StreamWriter(destpart.GetStream(FileMode.Create)))
dest_style_doc.Save(tw, SaveOptions.None);
}
}
}
Initial URL
http://www.adigopula.co.uk/post/Importing-Table-Styles-in-Word-Document-using-OpenXML-sdk.aspx
Initial Description
After importing tables from source document to target document, use this snippet to import table styles missing in the target document to enable correct formatting of the table.
Initial Title
Imorting Table styles in word document using OpenXML Sdk
Initial Tags
Initial Language
C#