链接到另一个文件

时间:2013-12-17 14:37:13

标签: c# openxml

我正在使用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>

除了'超链接'之外还有其他任何解决方案或我在上面的代码中遗漏的任何内容。

1 个答案:

答案 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表示这不是外部链接(用于内部链接)