2009-08-26 6 views

Répondre

7

Ce que vous voulez utiliser ici est la méthode Hyperlinks.Add.

Vous pouvez l'appeler avec le code qui ressemble à ceci:

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

Voici un exemple d'automatisation complète que vous pouvez tester:

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

J'utilisais le paramètre address au lieu de la sous-adresse ... le premier ne fonctionnait pas. – TimothyP

+0

Le point clé qui me manquait était que la cellule pointée par le lien hypertexte va dans la sous-adresse. Je tentais de le mettre dans l'adresse –

2

je le fais donc:

 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; 

Il est important d'insérer le symbole # dans le lien qui mène à une cellule à l'intérieur du livre, si ce symbole est pas inséré, le le lien est cassé.

Je décrit cette décision dans un article en langue russe, un exemple peut être trouvé here

0

ci-dessous un espoir vous aidera.

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

Pour ajouter un lien vers une image (déjà insérée dans la feuille):

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

Vous n'êtes pas l'ajouter directement à l'image, mais le 1er article dans son ShapeRange. (Quoi que ce soit ...)