it-swarm.com.de

So erstellen Sie eine Verknüpfung innerhalb einer Zelle mit EPPlus

Ich versuche herauszufinden, wie ein Hyperlink in eine Zelle geschrieben wird, indem EPPlus anstelle der Zelle verwendet wird, die den Linktext enthält. Ich brauche es, um als Link erkannt zu werden und anklickbar zu sein.

Jede Hilfe wird geschätzt.

35
IEnumerator

Der folgende Code hat bei mir gut funktioniert. 

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

Ich hoffe das würde dir helfen.

Viel Spaß beim Codieren !!

20
Bell

Dies ist die andere Möglichkeit:

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

Ich habe getestet Es funktioniert gut.

84
Han

Es gibt einige Möglichkeiten, dies zu tun:

1) Um die URI zu verwenden, legen Sie einen für Menschen lesbaren Namen fest

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

2) Verwendung von ExcelHyperLink und Festlegen eines lesbaren Namens mithilfe des Objektinitialisierers

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

3) Verwendung der Formel = Hyperlink ()

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

Basierend auf den bereitgestellten Antworten und der Dokumentation konnte ich eine Erweiterungsmethode erstellen, die sich auch mit der richtigen Formatierung von Hyperlinks befasst. Bei Bedarf wird ein benannter Stil erstellt, und dieser Stil wird für alle nachfolgenden Hyperlinks verwendet:

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;
    }
}

Ohne die Formatierung sieht der Hyperlink nur wie normaler Text aus, wenn cell.Hyperlink = new Uri(url); ohne explizite Formatierung verwendet wird (obwohl der Cursor richtig anzeigt, dass es sich bei dem Text tatsächlich um einen Hyperlink-Text handelt).

2
Alexei

Ich kenne EPPlus nicht, aber in VBA (und ich denke, C # würde dasselbe Prinzip verwenden) würden Sie den folgenden Code verwenden:

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

Hyperlinks sind Objekte mit einer Range-Eigenschaft. Während Ihr Zellenwert durch Überschreiben geändert werden kann, bleibt der Link jedoch erhalten. Bearbeiten Sie die Zelle mit einem langen Mausklick

Ich hoffe, das hilft - viel Glück, MikeD

1
MikeD

Wenn Sie EPPlus verwenden und einen Link zu einem anderen Blatt innerhalb desselben Dokuments erstellen möchten, gehen Sie folgendermaßen vor:

  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");
  }

Dies ist der richtige Weg, um eine Verknüpfung zu einem anderen Blatt innerhalb eines Excel-Dokuments zu erstellen. Bei Verwendung einer Formel mit der Funktion HYPERLINK wird beim Herunterladen einer Datei auf den Client die neueste Excel-Version Sicherheitswarnungen auslösen.

0
SouXin