Epplus阅读HTML片段的超链接

我有超链接的Excel xlsx文档。 超链接有地址和子地址(这是VBA调用Html碎片的方式,所有这些都在#号后面)

Epplus库对每个单元格都有Hyperlink属性,但它只有html地址的第一部分,所以不是

stackoverflow.com#footer 

我有:

 stackoverflow.com 

有什么办法来读取这个库的HTML片段的一部分?

通过epplus阅读超链接的代码:

  FileInfo xlsxFile = new FileInfo(_filePath); using (ExcelPackage pck = new ExcelPackage(xlsxFile)) { var wb = pck.Workbook; if (wb == null) return null; var ws = wb.Worksheets.FirstOrDefault(); ExcelRange er = ws.Cells[0,0]; var hyperlink = er.Hyperlink; 

这似乎是Excel超级链接和Epplus读取方式的一个问题。 Excel将超链接存储在工作表本身以及工作表的关系文件中,该工作表是存储工作簿部分(工作表,样式,string等)之间的任何types的交叉引用的文件。 这一切都与基于OpenOffice XML标准的xml xlsx文件的结构有关: OpenOffice XML Info

所以问题是Epplus依赖于那个不包含片段的关系文件,而工作表xml中的“超链接”节点却是这样做的。 如果通过重命名将xlsx文件作为zip文件打开,则可以看到所有这些细节。

所以,简短的答案是你被迫使用单元格对象的`.Value'。 不是很干净,但会起作用。 例如,如果我创build一个像这样的单元格:

Excel与URL +片段

与此代码:

 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 }