2009-08-26 37 views

Respuesta

7

lo que se quiere usar aquí es el método Hyperlinks.Add.

Se le puede llamar con el código que se ve algo como esto:

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"); 

Aquí es un ejemplo de automatización completa que usted puede probar:

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); 
} 

espero que esto ayude!

Mike

+0

Estaba usando el parámetro de dirección en lugar de la subdirección ... el primero no funciona. – TimothyP

+0

El punto clave que me faltaba era que la celda a la que apuntaba el hipervínculo entra en la subdirección. Estaba intentando ponerlo en la dirección –

2

lo hago para:

 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; 

Es importante insertar el símbolo # en el enlace que lleva a una célula dentro del libro, si no se ha insertado este símbolo, entonces el el enlace está roto.

que describe esta decisión en un artículo en lengua rusa, un ejemplo se puede encontrar here

0

Esperanza por debajo de uno le ayudará.

xlNewSheet.Hyperlinks.Add(xlWorkRange, string.Empty, "'Detailed Testcase Summary'!A1", "Click Here", "Please click me to go to Detailed Test case Summary Result");  
0

Para agregar un enlace a una imagen (ya insertada en la hoja):

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

no va a añadir directamente a la imagen, pero el primero artículo en él es ShapeRange. (Sea lo que sea ...)

Cuestiones relacionadas