Extracting a URL from hyperlinked text in Excel cell

前端 未结 8 2229
孤街浪徒
孤街浪徒 2020-12-17 23:43

I have a table full of Hyperlinked text in excel, so it\'s basically a bunch of names but when I click on one, it takes me to some URL in my default browser.

So I am

相关标签:
8条回答
  • 2020-12-17 23:53

    Use Visual Studio Tools for Office (VSTO) to open Excel workbook and extract all hyperlinks.


    I put a hyperlink into A1 of Sheet1 in Book1.xlsx: text = "example.com, address = "http://www.example.com"

    _Application app = null;
    try
    {
        app = new Application();
    
        string path = @"c:\temp\Book1.xlsx";
        var workbook = app.Workbooks.Open(path, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    
        var sheets = workbook.Worksheets;
        var sheet = (Worksheet)sheets.get_Item("Sheet1");
    
        var range = sheet.get_Range("A1", "A1");
        var hyperlinks = range.Cells.Hyperlinks.OfType<Hyperlink>();
    
        foreach (var h in hyperlinks)
        {
            Console.WriteLine("text: {0}, address: {1}", h.TextToDisplay, h.Address);
        }
    }
    finally
    {
        if (app != null)
            app.Quit();
    }
    

    Output:

    text: example.com, address: http://www.example.com/
    
    0 讨论(0)
  • 2020-12-17 23:57

    VBA function:

    1. Hit Alt+F11 (Opens Visual Basic Editor)
    2. Click on Insert -> Module (adds a module to your excel file)
    3. Paste the code below for the function of GETURL
    4. Hit Alt+Q (Closes the Visual Basic Editor)

    Now use the =GETURL(cell) to get the URL
    Example: =GETURL(A1) will return the URL for the Hyperlink displayed in cell A1

    Function GETURL(HyperlinkCell As Range)
        GETURL = HyperlinkCell.Hyperlinks(1).Address
    End Function
    

    Source

    0 讨论(0)
  • 2020-12-18 00:02

    why not use Uri class to convert string into URL:

    Uri uri = new Uri("http://myUrl/test.html");
    
    0 讨论(0)
  • 2020-12-18 00:03

    You could use a vba macro:

    Hit Alt+F11 to open the VBA editor and paste in the following:

    Function URL(rg As Range) As String
      Dim Hyper As Hyperlink
      Set Hyper = rg.Hyperlinks.Item(1)
      URL = Hyper.Address
    End Function
    

    And then you can use it in your Worksheet, like this:

    =URL(B4)

    0 讨论(0)
  • 2020-12-18 00:03

    In your code just add

    string myString = ((Excel.Range)xlws.Cells[2, 1]).Cells.Hyperlinks[1].Address;
    

    I obviously recommend doing some checks before accessing the "Hyperlinks" property.

    0 讨论(0)
  • 2020-12-18 00:13

    Try this:

    Excel.Application appExcel = new Excel.Application();
    Excel.Workbooks workBooks = appExcel.Workbooks;
    Excel.Workbook excelSheet = workBooks.Open("......EditPath", false, ReadOnly: true);
    
    foreach (Excel.Worksheet worksheet in excelSheet.Worksheets)
    {
        Excel.Hyperlinks hyperLinks = worksheet.Hyperlinks;
        foreach (Excel.Hyperlink lin in hyperLinks)
        {
            System.Diagnostics.Debug.WriteLine("# LINK: adress:" + lin.Address);
        }
    }
    
    0 讨论(0)
提交回复
热议问题