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: A hyperlink from Sheet1 Cell A1 to Sheet2 Cell B10
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: A hyperlink from Sheet1 Cell A1 to Sheet2 Cell B10
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
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
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");
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...)