使用NPOI在Word中添加超链接

使用NPOI 2.5.6版本 导出Word文档时,怎么在段落中插入附件超链接(附件在导出Word时一并导出)网上找了好久都没有找到,用的不是spire,是npoi,请问有没有告知一下解决方法?

img

在NPOI中,可以使用XWPFParagraph.CreateHyperlink()方法创建一个超链接。这个方法返回一个XWPFHyperlink对象,你可以使用它来设置超链接的地址和文本。

以下是一个示例代码,演示如何将一个本地文件作为附件插入到Word文档中的段落中,并在文本中创建一个超链接来访问该附件:

using NPOI.XWPF.UserModel;
using System.IO;

// ...

// 创建Word文档对象
XWPFDocument document = new XWPFDocument();

// 创建一个段落
XWPFParagraph paragraph = document.CreateParagraph();

// 创建一个超链接对象
XWPFHyperlink link = paragraph.CreateHyperlink();

// 设置超链接的地址为附件的路径
string attachmentPath = @"C:\path\to\attachment.docx";
link.URL = attachmentPath;

// 在文本中插入超链接
XWPFRun run = paragraph.CreateRun();
run.SetText("点击这里查看附件:");
run.SetUnderline(UnderlinePatterns.Single);
run.SetColor("0000FF");
link.Anchor = run.GetCTR().AddNewR();

// 将附件插入到文档中
using (FileStream stream = new FileStream(attachmentPath, FileMode.Open, FileAccess.Read))
{
    XWPFParagraph attachmentParagraph = document.CreateParagraph();
    XWPFRun attachmentRun = attachmentParagraph.CreateRun();
    attachmentRun.SetText("附件:");
    attachmentRun.SetBold(true);

    XWPFRun attachmentRun2 = attachmentParagraph.CreateRun();
    attachmentRun2.AddPicture(stream, (int)PictureType.PNG, "attachment.png", Units.ToEMU(200), Units.ToEMU(200));
}

// 保存文档
using (FileStream stream = new FileStream("output.docx", FileMode.Create, FileAccess.Write))
{
    document.Write(stream);
}

在这个示例代码中,我们首先创建一个段落,并在其中创建一个超链接对象。然后,我们设置超链接的URL为附件的路径,并在文本中插入超链接。接下来,我们将附件插入到文档中,并将其保存到本地文件。