【发布时间】:2017-06-03 07:29:09
【问题描述】:
我有一个下载然后读取 Excel 文件的 c# webjob。其中一列包含我想保存在我的数据库中的链接。我目前正在使用 ExcelDataReader 将 Excel 文件转换为 DataSet,然后遍历行以获取数据。转换后,此时有问题的列只是一个包含链接文本的字符串。
从其他读物看来,在 Excel 中,超链接存储在其他位置,并且在将 Excel 文件转换为数据集时不会保留该信息。
我不打算使用 ExcelDataReader,但想找到一种解决方案来提取这些链接 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;
}
【问题讨论】:
-
我不明白,你有一个字符串,你想把它转换成一个 URL?
-
在 Excel 文件中它是一个超链接。将单元格作为字符串读取时,它只会提取链接文本,而不是链接指向的 URL。
-
在 VBA 中,附加到单元格的超链接的地址属性将返回 URL。附加到单元格的超链接对象将是 Hyperlinks 集合中的第一项。因此,在 VBA 中,URL 看起来类似于
Range("A1").Hyperlinks(1).address。你能在 C# 中做类似的事情吗? -
Ron,看来我只需要使用一个插件,让我可以访问该数据,谢谢。
标签: c# asp.net excel dataset exceldatareader