如何使用EPPlus在单元格内创build链接

我想弄清楚如何使用EPPlus代替包含链接文本的单元格在单元格内编写超链接。 我需要它被认为是一个链接,并可点击。

任何帮助表示赞赏。

下面的代码和我一起工作得很好。

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

我希望这会帮助你。

快乐的编码!

这是另一种方式:

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

我testing过了。 它工作正常。

有几种方法可以解决这个问题:

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)使用= Hyperlink()公式

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

我不知道EPPlus,但在VBA(我猜C#会使用相同的原则),你会使用下面的代码:

 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

基于提供的答案和文档,我能够创build一个扩展方法,也处理适当的超链接格式。 它会根据需要创build一个命名样式,并将该样式用于所有后续超链接:

 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); 在没有明确的样式的情况下使用(尽pipe光标将正确地指示文本实际上是超链接文本)。