从Excel单元格中的超链接文本中提取URL

AJ_*_*AJ_ 8 .net c# excel vsto hyperlink

我在excel中有一个充满超链接文本的表,所以它基本上是一堆名字但是当我点击一个时,它会把我带到默认浏览器中的某个URL.

所以我在我的程序中从这个excel表中提取文本,但是当我从这些超链接单元格中提取时得到的值是字符串里面的值,当我想要在excel文件中链接字符串的URL时.

所以我想有两种方法可以做到这一点.我可以将excel文件中的所有超链接文本转换为相应的URL,或者我可以使用C#以某种方式从单元格而不是文本中提取URL值.

我不知道如何做这些事情,但任何帮助将不胜感激.

到目前为止C#代码:

Excel.ApplicationClass excelApp = new Excel.ApplicationClass();

//excelApp.Visible = true;

Excel.Workbook excelWorkbook = 
excelApp.Workbooks.Open("C:\\Users\\use\\Desktop\\list.xls",
0, false, 5, "", "",false, Excel.XlPlatform.xlWindows, "", 
true, false, 0, true, false, false);

Excel.Sheets excelSheets = excelWorkbook.Worksheets;

string currentSheet = "Sheet1";
Excel.Worksheet xlws = (Excel.Worksheet)excelSheets.get_Item(currentSheet);

string myString = ((Excel.Range)xlws.Cells[2, 1]).Value.ToString();
Run Code Online (Sandbox Code Playgroud)

至于excel文件,它只是一长串的超链接名称.例如,单元格A2将包含文本:

美味的饼干食谱

我想提取字符串:

http://allrecipes.com//Recipes/desserts/cookies/Main.aspx
Run Code Online (Sandbox Code Playgroud)

jeb*_*jeb 9

你可以使用vba宏:

Alt+ F11打开VBA编辑器并粘贴以下内容:

Function URL(rg As Range) As String
  Dim Hyper As Hyperlink
  Set Hyper = rg.Hyperlinks.Item(1)
  URL = Hyper.Address
End Function
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的工作表中使用它,如下所示:

=URL(B4)


小智 7

在您的代码中添加

string myString = ((Excel.Range)xlws.Cells[2, 1]).Cells.Hyperlinks[1].Address;
Run Code Online (Sandbox Code Playgroud)

我显然建议在访问“超链接”属性之前做一些检查。


小智 5

VBA功能:

  1. Alt+ F11(打开Visual Basic编辑器)
  2. 单击Insert - > Module(将模块添加到excel文件)
  3. 粘贴下面的代码以获取GETURL的功能
  4. Alt+ Q(关闭Visual Basic编辑器)

现在使用获取URL 示例:将返回单元格A1中显示的超链接的URL=GETURL(cell)
=GETURL(A1)

Function GETURL(HyperlinkCell As Range)
    GETURL = HyperlinkCell.Hyperlinks(1).Address
End Function
Run Code Online (Sandbox Code Playgroud)

资源