EPPlus: создание гиперссылки на столбец - PullRequest
0 голосов
/ 11 июля 2019

Я не могу сделать гиперссылку в шаблоне Excel.Я хотел бы отобразить значение в ячейке следующим образом: http://www.diamondschool/{personName}

Я прочитал официальную документацию по github.Совсем не повезло

public FileInfo GenerateTemplate(long shoolId)
{
    using (var excelPackage = new ExcelPackage(dataTemplate))
    {
        excelPackage.Workbook.Worksheets.Add("Sheet1");

        var ws = excelPackage.Workbook.Worksheets[1];

        var dataTable = InitializeDataTable();
        var templateData = GetTemplateData(schoolId);
        PopulateData(templateData, dataTable);

        ws.Cells["A2"].LoadFromDataTable(dataTable, true);
    }

// Поскольку я уже загружаю данные из таблицы данных, я не могу найти способ отобразить значение в виде гиперссылки.// http://www.diamondschool/{personName}, поэтому, в зависимости от значения в ячейке, отображаем имя пользователя в виде гиперссылки на этот адрес

            //Person name as HyperLink
            var namedStyle = ws.Workbook.Styles.CreateNamedStyle("HyperLink");
            namedStyle.Style.Font.UnderLine = true;
            namedStyle.Style.Font.Color.SetColor(Color.Blue);
            ws.Cells["A2"].Value
            ws.Cells["A2"].StyleName = "HyperLink";

            excelPackage.Save();
        }

        return dataTemplate;
    }

private static DataTable InitializeDataTable()
{
    var dataTable = new DataTable();

    dataTable.Columns.Add("Person Id", typeof(string));
    dataTable.Columns.Add("Person Name", typeof(string));
    return dataTable;
}


private static void PopulateData(IEnumerable<DataTemplateRow> data, DataTable dataTable)
{
    foreach (var item in data)
    {
        var dataRow = dataTable.NewRow();
        dataRow["Person Id"] = item.Id;
        dataRow["Person Name"] = item.Name;
        dataTable.Rows.Add(dataRow);
    }
}


public IEnumerable<DataTemplateRow> GetTemplateData(long schoolId)
{
    var personData = _schoolService.GetData(schoolId);

    var result = personData.Data.Select(result => new DataTemplateRow
    {
        PersonId = result.Id,
        PersonName = result.Name
    });

    return result;
}


public class DataTemplateRow
{
    public long Id { get; set; }
    public class Name { get; set; }
}

Поскольку я уже загружаю данные из таблицы данных, я не могу найтиспособ отображения значения в виде гиперссылки.http://www.diamondschool/{personName}, поэтому, в зависимости от значения в ячейке, отобразите имя пользователя в виде гиперссылки на этот адрес

1 Ответ

0 голосов
/ 11 июля 2019

Вам нужно отформатировать ячейку следующим образом.Создайте Hyperlink и установите его с Uri

ws.Cells[5, 5].Style.Font.UnderLine = true;
ws.Cells[5, 5].Style.Font.Bold = true;
ws.Cells[5, 5].Style.Font.Color.SetColor(Color.Blue);
ws.Cells[5, 5].Hyperlink = new Uri("https://www.google.nl");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...