使用OOXML和C#从.xlsx文件中提取外部超链接

问题描述

我有一个带有嵌入式外部超链接的xlsx文件

enter image description here

我正在尝试使用OpenXML文档格式以C#提取它们。

我正在这样阅读文档:

WorkbookPart workbookPart = doc.WorkbookPart;
                    
Sheet thesheet = (Sheet)doc.WorkbookPart.Workbook.Sheets.ChildElements.GetItem(0);
                      
Worksheet theWorksheet = ((WorksheetPart)workbookPart.GetPartById(thesheet.Id)).Worksheet;

SheetData thesheetdata = (SheetData)theWorksheet.GetFirstChild<SheetData>();

然后遍历每个行和单元格,将数据保存在一个类中。我需要将链接另存为此类的字符串属性,但是我只获得有关单元格的可见内容(“单击我”。)

通过以下方式获取所有超链接

IEnumerable<Hyperlink> hyperlinks = theWorksheet.Descendants<Hyperlink>();

,并将单元格引用(例如“ F5”)与IEnumerable中对象的reference属性进行匹配,将为我提供所需的超链接的引用ID(例如“ rId12”),但是我找不到一个获取实际链接方法

我尝试过:

HyperlinkRelationship hlr = workbookPart.HyperlinkRelationships.FirstOrDefault(a => a.Id == link.Id);

但是结果是null,甚至workbookPart.HyperlinkRelationships都不会在任何元素的任何属性中包含任何链接字符串。

我想要的是在获取链接字符串的同时还保留行数据(它们出现的位置)。我已经在网上进行了广泛的搜索,但是找不到任何有意义的结果,如何实例化包含这些关系的对象的任何帮助或指导都将大有帮助,对此深表感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)