Soy nuevo en la programación de Word con C # y estoy tratando de insertar 3 hipervínculos en un documento de Word usando C #, pero por alguna razón, el hipervínculo se sobrescribe y solo los últimos hipervínculos permanecen en la celda.

Después de algunas investigaciones, parece ser un problema común. Con este ejemplo, debería funcionar ... https://social.msdn.microsoft.com/Forums/office/en-US/c35d9598-e933 -4a90-ba6e-088c2bdb6484 / añadiendo-enlaces-múltiples-a-una-celda-de-tabla? Forum = worddev

Aquí está mi función

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 + "\r\n")).Range;
        r.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
        r.InsertAfter("\r\n");
        r.Collapse(Word.WdCollapseDirection.wdCollapseEnd);

    }
}

Y como se llama:

    List<string> stories = new List<string>();
    stories.Add("test1");
    stories.Add("test2");
    stories.Add("test3");

    RemplirSommaireChangement(doc, t, "No changement", "responsable", DateTime.Now, stories);

¿Alguna idea de lo que está mal con esta función?

¡Gracias!

1
Makse 1 sep. 2020 a las 00:59

1 respuesta

La mejor respuesta

El principal problema es que creo que tienes

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

dentro su foreach bucle, lo que significa que está restableciendo el rango r para que sea el rango de la celda para cada cadena en {{X2 }}. Por lo tanto, terminará con un hipervínculo construido a partir de la última de esas cadenas, seguido de un par de devoluciones de párrafo.

Mover esa línea para que venga antes del bucle es donde comenzaría. Sin probar, no puedo decir si necesitaría ajustar otras partes del código también.

0
user12750785user12750785 1 sep. 2020 a las 06:33