使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink
原理
先创建一个包含所有EXCEL单元格中超链接Hyperlink数据的表,再定位单元格通过列头(如A1,B1)获取超链接信息。本文仅重着于如何读取EXCEL中的超链接Hyperlink信息,不设计OPEN XML SDK讲解,如果需要请参考:
代码
using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(stream,false)) { WorkbookPart workbookPart = myDoc.WorkbookPart; foreach (var worksheetPart in workbookPart.WorksheetParts) { //所有超链接hyperlink数据表 var hyperlinks = worksheetPart.RootElement.Descendants<Hyperlinks>().First().Cast<Hyperlink>(); var sheet = worksheetPart.Worksheet.Elements<SheetData>().First(); foreach (Row r in sheet.Elements<Row>()) { var cell = (Cell)r.ElementAtOrDefault(1); //举例获取一个单元格 cell = (Cell)r.ElementAt(1); //通过单元格列头信息获取超链接 var hyperlink = hyperlinks.SingleOrDefault(i => i.Reference.Value == cell.CellReference.Value); if (hyperlink != null) { var hyperlinksRelation = worksheetPart.HyperlinkRelationships.SingleOrDefault(i => i.Id == hyperlink.Id); if (hyperlinksRelation != null) { //这是最终我们需要的超链接 var url = hyperlinksRelation.Uri.ToString(); } } } } }