在MS Word表格单元格中添加多个超链接



我是用C#进行Word编程的新手,我正试图用C#在Word文档中插入3个超链接,但由于某种原因,超链接被覆盖,只有最后一个超链接保留在单元格中。

经过一些研究,这似乎是一个常见的问题。使用这个例子,它应该工作。。。https://social.msdn.microsoft.com/Forums/office/en-US/c35d9598-e933-4a90-ba6e-088c2bdb6484/adding-multiple-links-to-a-table-cell?forum=worddev

这是我的功能

private static void RemplirSommaireChangement(Word.Document doc, Word.Table t, string noChangement, string responsable, DateTime dateMEP, List<string> backlogItems)
{
int nbRows = t.Rows.Count;
Word.Range r;
object oAdress;
Word.Hyperlinks hl;
t.Rows[1].Cells[2].Range.Text = noChangement;
t.Rows[2].Cells[2].Range.Text = responsable;
t.Rows[3].Cells[2].Range.Text = dateMEP.ToShortDateString();
t.Rows[5].Cells[2].Range.Text = "";
hl = t.Rows[5].Cells[2].Range.Hyperlinks;
foreach (string s in backlogItems)
{
r = t.Rows[5].Cells[2].Range;
oAdress = "http://www.test-" + s + ".com";
r  = r.Hyperlinks.Add(r, oAdress, TextToDisplay: (object)(s + "rn")).Range;
r.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
r.InsertAfter("rn");
r.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
}
}

以及如何称呼:

List<string> stories = new List<string>();
stories.Add("test1");
stories.Add("test2");
stories.Add("test3");
RemplirSommaireChangement(doc, t, "No changement", "responsable", DateTime.Now, stories);

知道这个函数出了什么问题吗?

谢谢!

主要问题是我认为你有

r = t.Rows[5].Cells[2].Range;

您的foreach循环中,这意味着您正在将范围r重置为backlogItems中每个字符串的单元格的范围。因此,您最终会得到一个由最后一个字符串构建的超链接,后面跟着几个段落返回。

移动那条线,使它在循环之前,这就是我要开始的地方。如果不进行测试,我无法判断您是否也需要调整代码的其他部分。

最新更新