这似乎是与擅长的方式储存超链接和Epplus读取它们的方式的问题。 Excel将超链接存储在工作表本身以及工作表的关系文件中,该文件存储工作簿部分(工作表,样式,字符串等)之间的任何类型的交叉引用。这一切都与一个xlsx文件的结构有关,这个文件是基于OpenOffice XML标准的xml:OpenOffice XML Info
所以问题是Epplus依赖于那个不包含片段的关系文件,而“超链接'工作表xml中的节点。如果通过重命名将xlsx文件作为zip文件打开,您可以在其细节中看到所有这些内容。
所以,简短的回答是你不得不使用单元格对象的`.Value'。不够干净,但它会起作用。例如,如果我创建这样的细胞:
与此代码:
var fi = new FileInfo(@"c:\temp\Html_Fragment.xlsx");
using (var pck = new ExcelPackage(fi))
{
var wb = pck.Workbook;
var ws = wb.Worksheets.FirstOrDefault();
ExcelRange er = ws.Cells[1,1];
var hyperlink = er.Hyperlink;
Console.WriteLine(er.Value);
Console.WriteLine("{{Value: {0}, Hyperlink: {1}}}", er.Value, er.Hyperlink.AbsoluteUri);
}
给出了这样的:
{
Value: https://msdn.microsoft.com/en-us/library/aa982683(v=office.12).aspx#Anchor_3,
Hyperlink: https://msdn.microsoft.com/en-us/library/aa982683(v=office.12).aspx
}