如何从Excel单元格中提取链接url

我有ac#webjob下载,然后读取Excel文件。 其中一列包含我想保存在数据库中的链接。 我目前正在使用ExcelDataReader将Excel文件转换为DataSet,然后遍历行来获取数据。 转换之后,此时所涉及的列只是包含链接文本的string。

从其他阅读中听起来像在Excel中,超链接存储在其他地方,并且在将Excel文件转换为DataSet时不保留该信息。

我没有设置使用ExcelDataReader,但希望find解决scheme来提取这些链接的URL,而无需支付一些第三方软件。

以下是我至今参考的简单代码:

FileStream stream = File.Open(fileLocation, FileMode.Open, FileAccess.Read); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); int count = 0; foreach (DataRow row in result.Tables["WorkSheetName"].DataTable.Rows) { var item = new myObject(); item.Prop1 = long.Parse(row["Column3"].ToString()); item.Prop2 = row["Column7"].ToString(); //The link, currently only seeing link text this.myDbContext.myTable.Add(item); await this.myDbContext.SaveChangesAsync(); count += 1; } 

我最终能够使用EPPLUS获取超链接数据来读取我的excel文件。

码:

 var pck = new ExcelPackage(excelFileStream); ExcelWorksheet ws = pck.Workbook.Worksheets.First(); DataTable dt = new DataTable(ws.Name); int totalCols = ws.Dimension.End.Column; int totalRows = ws.Dimension.End.Row; int startRow = 3; ExcelRange wsRow; DataRow dr; foreach (var firstRowCell in ws.Cells[2, 1, 2, totalCols]) { dt.Columns.Add(firstRowCell.Text); } for (int rowNum = startRow; rowNum <= totalRows; rowNum++) { wsRow = ws.Cells[rowNum, 1, rowNum, totalCols]; dr = dt.NewRow(); int rowCnt = 0; foreach (var cell in wsRow) { if (rowCnt == 7) { if (cell.Hyperlink != null) { dr[cell.Start.Column - 1] = cell.Hyperlink.AbsoluteUri; } } else { dr[cell.Start.Column - 1] = cell.Text; } rowCnt++; } if (!String.IsNullOrEmpty(dr[7].ToString())) { dt.Rows.Add(dr); } } return dt;