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(); } |