Adding hyperlinks in Excel[2007] in C# - Within Excel it self

前端 未结 4 2124
醉梦人生
醉梦人生 2021-02-08 11:00

Can anybody tell me how we can add a hyperlink in Excel (2007 or later) from a cell in one sheet to a cell in another sheet using Office Interop in .NET (c#)

For example

相关标签:
4条回答
  • 2021-02-08 11:35

    What you want to use here is the Hyperlinks.Add method.

    You can call it with code that looks something like this:

    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
    Excel.Range rangeToHoldHyperlink = worksheet.get_Range("A1", Type.Missing);
    string hyperlinkTargetAddress = "Sheet2!A1";
    
    worksheet.Hyperlinks.Add(
        rangeToHoldHyperlink,
        string.Empty,
        hyperlinkTargetAddress,
        "Screen Tip Text",
        "Hyperlink Title");
    

    Here is a full automation example that you can test:

    void AutomateExcel()
    {
        Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = true;
    
        Excel.Workbook workbook = excelApp.Workbooks.Add(Type.Missing);
        workbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        workbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    
        Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
        Excel.Range rangeToHoldHyperlink = worksheet.get_Range("A1", Type.Missing);
        string hyperlinkTargetAddress = "Sheet2!A1";
    
        worksheet.Hyperlinks.Add(
            rangeToHoldHyperlink,
            string.Empty,
            hyperlinkTargetAddress,
            "Screen Tip Text",
            "Hyperlink Title");
    
        MessageBox.Show("Ready to clean up?");
    
       // Cleanup:
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
        GC.WaitForPendingFinalizers();
    
        Marshal.FinalReleaseComObject(range);
    
        Marshal.FinalReleaseComObject(worksheet);
    
        workbook.Close(false, Type.Missing, Type.Missing);
        Marshal.FinalReleaseComObject(workbook);
    
        excelApp.Quit();
        Marshal.FinalReleaseComObject(excelApp);
    }
    

    Hope this helps!

    Mike

    0 讨论(0)
  • 2021-02-08 11:37

    To add a link to a picture (already inserted into the sheet):

    Hyperlinks hyperlinks = ws.Hyperlinks;
    Hyperlink hyperlink = hyperlinks.Add(picture.ShapeRange.Item(1), "http://stackoverflow.com");
    

    You are not adding it directly to the picture, but the 1st item in it's ShapeRange. (Whatever that is...)

    0 讨论(0)
  • 2021-02-08 11:40

    I do it so:

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Add(System.Reflection.Missing.Value);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
            Excel.Hyperlink link =
                (Excel.Hyperlink)
                xlWorkSheet.Hyperlinks.Add(xlWorkSheet.get_Range("L500", Type.Missing), "#Sheet1!B1", Type.Missing,
                                           "Go top",
                                           "UP");
    
            xlWorkSheet.Hyperlinks.Add(xlWorkSheet.get_Range("C5", Type.Missing), "www.google.com", Type.Missing, "Click me to go to Google ","Google.com");                                                     
            xlApp.Visible = true;
    

    It is important to insert the symbol # in the link that leads to a cell inside the book, if this symbol is not inserted, then the link is broken.

    I described this decision in an article in Russian language, an example can be found here

    0 讨论(0)
  • 2021-02-08 11:46

    Hope below one will help you.

    xlNewSheet.Hyperlinks.Add(xlWorkRange, string.Empty, "'Detailed Testcase Summary'!A1", "Click Here", "Please click me to go to Detailed Test case Summary Result");    
    
    0 讨论(0)
提交回复
热议问题