Подтвердить что ты не робот

Как создать ссылку внутри ячейки с помощью EPPlus

Я пытаюсь выяснить, как написать гиперссылку внутри ячейки, используя EPPlus вместо ячейки, содержащей текст ссылки. Мне нужно, чтобы он был распознан как ссылка и был доступен для просмотра.

Любая помощь приветствуется.

4b9b3361

Ответ 1

Следующий код работал отлично со мной.

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

Надеюсь, это поможет вам.

Счастливое кодирование!!

Ответ 2

Это другой способ:

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

Я тестировал. Он отлично работает.

Ответ 3

Есть несколько способов сделать это:

1) Чтобы использовать URI, установите человекочитаемое имя

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

2) Использовать ExcelHyperlink и установить читаемое пользователем имя с помощью инициализатора объекта

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

3) Использовать формулу = гиперссылка()

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

Ответ 4

Я не знаю EPPlus, но в VBA (и я предполагаю, что С# будет использовать тот же принцип), вы бы использовали следующий код:

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

Гиперссылки - это объекты, имеющие свойство диапазона, поэтому, когда значение вашей ячейки может быть изменено путем наложения, ссылка останется. Отредактируйте ячейку длинным щелчком мыши

Надеюсь, это поможет - удачи MikeD

Ответ 5

На основе предоставленных ответов и документации мне удалось создать метод расширения, который также касается правильного форматирования гиперссылок. При необходимости он создает именованный стиль и использует этот стиль для всех последующих гиперссылок:

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

Без стиля гиперссылка будет выглядеть как обычный текст, если cell.Hyperlink = new Uri(url); используется без явного стиля (хотя курсор будет правильно указывать, что текст на самом деле является гипертекстовым текстом).