我试图弄清楚如何使用EPPlus而不是包含链接文本的单元格在单元格内编写超链接。我需要它被识别为链接并且可以点击。
感谢任何帮助。
答案 0 :(得分:87)
这是另一种方法:
var cell = sheet.Cells["A1"];
cell.Hyperlink = new Uri("http://www.google.com");
cell.Value = "Click me!";
我已经测试过了。它工作正常。
答案 1 :(得分:20)
下面的代码对我很好。
string FileRootPath = "http://www.google.com";
_Worksheet.Cells[intCellNumber, 1].Formula = "HYPERLINK(\"" + FileRootPath + "\",\"" + DisplayText + "\")";
我希望这会对你有所帮助。
快乐的编码!!
答案 2 :(得分:19)
有几种方法可以解决这个问题:
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();
答案 3 :(得分:2)
根据提供的答案和文档,我能够创建一个扩展方法,该方法还处理正确的超链接格式。如果需要,它会创建一个命名样式,并将该样式用于所有后续超链接:
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);
而没有明确的样式(尽管光标将正确指示文本实际上是超链接文本)。
答案 4 :(得分:1)
我不知道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
答案 5 :(得分:1)
如果您正在使用EPPlus并想要在同一文档中创建指向另一个工作表的链接,那么这是执行此操作的正确方法:
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");
}
这是在Excel文档中创建指向其他工作表的链接的正确方法。使用具有HYPERLINK
功能的公式后,如果将文件下载到客户端,最新的Excel版本将引发安全警告。