I was looking for a way to insert a hyperlink into a Word document I am creating using the Open XML SDK (v2.5). I found a couple of examples on the web and got them to work. The link that was created was clickable but it wasn't styled like a hyperlink. After some trial and error I figured out the issue. Since I was creating the document from scratch it has no styles defined in it. So I created a link in word and copied the hyperlink style.
Here is the example code:
const string outputFilename = @"c:\temp\linked.docx"; using (var wordDocument = WordprocessingDocument.Create(outputFilename, WordprocessingDocumentType.Document)) { var mainPart = wordDocument.AddMainDocumentPart(); // Create the document structure and add some text. var doc = mainPart.Document = new Document(); var body = doc.AppendChild(new Body()); // Start a paragraph with some text var para = body.AppendChild(new Paragraph()); var run = para.AppendChild(new Run()); run.AppendChild(new Text("This is a formatted hyperlink: ") { Space = SpaceProcessingModeValues.Preserve // Need this so the trailing space is preserved. }); // Create a hyperlink relationship. Pass the relationship id to the hyperlink below. var rel = wordDocument.MainDocumentPart.AddHyperlinkRelationship(new Uri("http://www.example.com/"), true); // Append the hyperlink with formatting. para.AppendChild( new Hyperlink( new Run( new RunProperties( // This should be enough if starting with a template new RunStyle { Val = "Hyperlink", }, // Add these settings to style the link yourself new Underline { Val = UnderlineValues.Single }, new Color { ThemeColor = ThemeColorValues.Hyperlink }), new Text { Text = "Click Here"} )) { History = OnOffValue.FromBoolean(true), Id = rel.Id }); doc.Save(); }