我正在使用open-xml生成word文档。
我显示了图像文件的名称 即 C:\设置\ 1.JPG C:\配置\ 2.JPG
点击这些名称(cntl + click)应该打开那些文件。但它不会转到文件而不是文档顶部的锚点。
我使用下面的超链接
Paragraph paraSummary = body.AppendChild(new Paragraph());
Run runSummary = paraSummary.AppendChild(new Run());
runSummary.AppendChild(new Break());
Hyperlink hl = new Hyperlink(new Run(new Text(item.ToString())))
{
DocLocation = rootPath1 + "\\" + item.ToString()
};
runSummary.AppendChild(hl);
mainPart.Document.Append(body);
mainPart.Document.Save();
生成的文件的xml是:
-<w:hyperlink w:docLocation="c:\\config\\1.jpg">-<w:r><w:t>1.jpg</w:t></w:r></w:hyperlink>
除了'超链接'之外还有其他任何解决方案或我在上面的代码中遗漏的任何内容。
答案 0 :(得分:1)
根据Open XML规范。
http://officeopenxml.com/WPhyperlink.php
docLocation
用于外部链接。
对于所有类型的超链接,我们必须创建一个关系。 例如
在你的情况下,TargetMode不能是外部的
在Open XML SDK中,您可以将其实现为以下代码示例
Hyperlink hl =
new Hyperlink(new Run(new Text("Link1")))
{
Id = "L1"
};
runSummary.AppendChild(hl);
mainPart.Document.Append(body);
mainPart.AddHyperlinkRelationship(new Uri("file:\\C:\\config\\image.jpg"), false, "L1");
在AddHyperlinkRelationship方法中,false表示这不是外部链接(用于内部链接)