planilla officeopenxml guardar escribir editar desde datos crear como archivo actualizar c# excel epplus

officeopenxml - excel epplus c#



Cómo crear un enlace dentro de una celda usando EPPlus (6)

Estoy intentando descubrir cómo escribir un hipervínculo dentro de una celda usando EPPlus en lugar de la celda que contiene el texto del enlace. Necesito que se lo reconozca como un enlace y se pueda hacer clic.

Cualquier ayuda es apreciada.


El siguiente código funcionó bien conmigo.

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

Espero que esto te ayude

Feliz codificación !!


En base a las respuestas y documentación proporcionadas, pude crear un método de extensión que también trata con el formato adecuado de hipervínculo. Crea un estilo con nombre, si es necesario, y usa ese estilo para todos los hipervínculos siguientes:

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

Sin el estilo, el hipervínculo se verá igual que el texto normal, si cell.Hyperlink = new Uri(url); se usa sin un estilo explícito (aunque el cursor indicará correctamente que el texto es en realidad un texto de hipervínculo).


Esta es la otra forma de hacerlo:

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

He probado. Funciona bien.


Hay algunas maneras de hacerlo:

1) Para usar el URI, establece un nombre legible para el ser humano

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

2) Para usar ExcelHyperlink y establecer un nombre legible para humanos usando el inicializador de objetos

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

3) Para usar la fórmula = Hipervínculo ()

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


No sé EPPlus, pero en VBA (y supongo que C # usaría el mismo principio) usarías el siguiente código:

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

Los hipervínculos son objetos que tienen una propiedad de rango, por lo que, aunque el valor de su celda se puede cambiar excediendo el enlace, el enlace permanecerá. Edite la celda con un clic prolongado

Espero que esto ayude - buena suerte MikeD


Si está utilizando EPPlus y desea crear un enlace a otra hoja dentro del mismo documento, esta es la forma correcta de hacerlo:

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

Esta es la forma correcta de crear un enlace a otra hoja dentro del documento de Excel. Al usar la fórmula con la función HYPERLINK , si se descarga un archivo al cliente, la última versión de Excel generará advertencias de seguridad.