web-dev-qa-db-fra.com

Comment créer un lien dans une cellule en utilisant EPPlus

J'essaie de comprendre comment écrire un lien hypertexte dans une cellule en utilisant EPPlus au lieu de la cellule contenant le texte du lien. J'en ai besoin pour être reconnu comme un lien et être cliquable.

Toute aide est appréciée.

35
IEnumerator

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 vous aiderait.

Bonne codage !!

20
Bell

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é. Ça fonctionne bien.

84
Han

Il y a plusieurs façons de s'y prendre:

1) Pour utiliser l'URI, définissez 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 lisible par l'homme à l'aide de l'initialiseur d'objet

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

3) Pour utiliser la formule = Hyperlink ()

var cell = sheet.Cells["A1"];
cell.Formula = string.Format("HYPERLINK({0},{1})", "http://www.google.com", "Click me!");
cell.Calculate();
16
Cardin

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 correct des liens hypertexte. Il crée un style nommé, si nécessaire, et utilise ce style pour tous les hyperliens suivants:

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, le lien hypertexte ressemblera à du texte normal, si cell.Hyperlink = new Uri(url); est utilisé sans style explicite (bien que le curseur indique correctement que le texte est en réalité un lien hypertexte).

2
Alexei

Je ne connais pas EPPlus, mais dans VBA (et je suppose que C # utiliserait le même principe), vous utiliseriez 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 plage. Ainsi, bien que la valeur de votre cellule puisse être modifiée par une substitution, le lien reste. Modifier la cellule par un long clic de souris

J'espère que cela vous aidera - bonne chance MikeD

1
MikeD

Si vous utilisez EPPlus et souhaitez créer un lien vers une autre feuille au sein du même document, voici comment procéder:

  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 un document Excel. Si vous utilisez une formule avec la fonction HYPERLINK, si un fichier est téléchargé sur le client, la dernière version d'Excel déclenche des avertissements de sécurité.

0
SouXin