Comment créer un lien à l'intérieur d'une cellule en utilisant EPPlus

j'essaie de comprendre comment écrire un lien hypertexte à l'intérieur d'une cellule en utilisant EPPlus au lieu de la cellule contenant le texte du lien. J'ai besoin qu'il soit reconnu comme un lien et être cliquable.

Toute aide est appréciée.

32
demandé sur IEnumerator 2011-10-03 22:37:55

6 réponses

Le code ci-dessous a bien fonctionné avec moi.

string FileRootPath = "http://www.google.com";
_Worksheet.Cells[intCellNumber, 1].Formula = "HYPERLINK(\"" + FileRootPath + "\",\"" + DisplayText + "\")";

j'espère que cela peut vous aider.

bon codage!!

18
répondu Bell 2012-08-30 10:01:08

C'est l'autre façon de faire:

var cell = sheet.Cells["A1"];
cell.Hyperlink = new Uri("http://www.google.com");
cell.Value = "Click me!";

j'ai testé. Il fonctionne très bien.

78
répondu Han 2015-09-16 09:01:27

Il y a plusieurs façons d'aller à ce sujet:

1) pour utiliser URI, définissez alors un nom lisible par l'homme

var cell = sheet.Cells["A1"];
cell.Hyperlink = new Uri("http://www.google.com");
cell.Value = "Click me!";

2) pour utiliser ExcelHyperlink et définir un nom humainement lisible en utilisant object initializer

var cell = sheet.Cells["A1"];
cell.Hyperlink = new ExcelHyperlink("http://www.google.com") { Display = "Click me! };

3) À utiliser =lien Hypertexte() formule

var cell = sheet.Cells["A1"];
cell.Formula = string.Format("HYPERLINK({0},{1})", "http://www.google.com", "Click me!");
cell.Calculate();
12
répondu Cardin 2015-05-28 05:07:45

sur la base des réponses fournies et de la documentation, j'ai pu créer une méthode d'extension qui traite également du formatage approprié des hyperliens. Il crée un style nommé, si nécessaire, et utiliser ce style pour tous les liens hypertexte:

public static void WriteHyperlink(this ExcelRange cell, string text, string url, bool excelHyperlink = false, bool underline = true)
{
    if (string.IsNullOrWhiteSpace(text))
        return;

    // trying to reuse hyperlink style if defined
    var workBook = cell.Worksheet.Workbook;
    string actualStyleName = underline ? HyperLinkStyleName : HyperLinkNoUnderlineStyleName;

    var hyperlinkStyle = workBook.Styles.NamedStyles.FirstOrDefault(s => s.Name == actualStyleName);
    if (hyperlinkStyle == null)
    {
        var namedStyle = workBook.Styles.CreateNamedStyle(actualStyleName);  
        namedStyle.Style.Font.UnderLine = underline;
        namedStyle.Style.Font.Color.SetColor(Color.Blue);
    }

    if (excelHyperlink)
        cell.Hyperlink = new ExcelHyperLink(url) { Display = text };
    else
    {
        cell.Hyperlink = new Uri(url);
        cell.Value = text;
        cell.StyleName = actualStyleName;
    }
}

sans le style, l'hyperlien aura l'air d'un texte normal, si cell.Hyperlink = new Uri(url); est utilisé sans Style explicite (bien que le curseur indique correctement que le texte est en fait un lien hypertexte).

2
répondu Alexei 2017-04-14 13:56:53

je ne sais pas EPPlus, mais en VBA (et je suppose que C# utilise le même principe), vous utilisez le code suivant:

Sub Test()

    ' place value into cell
    ActiveSheet.[A1] = 13

    ' create link and set its range property
    ActiveSheet.Hyperlinks.Add ActiveSheet.[A1], "http://www.google.at"

    ' use cell in a calculation
    ActiveSheet.[A2].Formula = "=A1+2"

End Sub

les hyperliens sont des objets ayant une propriété de portée, donc alors que votre valeur de cellule peut être changée par overtyping, le lien restera. Éditez la cellule par un clic de souris long

Espérons que cette aide - bonne chance MikeD

1
répondu MikeD 2011-10-04 13:59:59

si vous utilisez EPPlus et que vous voulez créer un lien vers une autre feuille dans le même document, alors c'est la bonne façon de faire:

  var link = "Another Excel Sheet"; //Maximum length is 31 symbols
  using (var excel = new ExcelPackage())
  {
       var ws = excel.Workbook.Worksheets.Add("Test");
       ws.Cells[row, col].Hyperlink =
                new ExcelHyperLink((char)39 + link + (char)39 + "!A1", 
                "Name of another excel sheet could be more then 31 symbols");
  }

C'est la bonne façon de créer un lien vers une autre feuille dans le document Excel. Avoir l'aide de la formule HYPERLINK fonction, si un fichier est téléchargé sur le client, la dernière version Excel soulèvera les avertissements de sécurité.

0
répondu SouXin 2018-05-04 13:21:27