Aggiunta di collegamenti ipertestuali in Excel in C #: all’interno di Excel

Qualcuno può dirmi come possiamo aggiungere un collegamento ipertestuale in Excel (2007 o versioni successive) da una cella in un foglio a una cella in un altro foglio utilizzando Office Interop in .NET (c #)

Ad esempio: Un collegamento ipertestuale dalla cella Foglio1 alla cella Foglio B10

Quello che vuoi usare qui è il metodo Hyperlinks.Add .

Puoi chiamarlo con un codice simile a questo:

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

Ecco un esempio di automazione completo che puoi testare:

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

Spero che questo ti aiuti!

Mike

Lo faccio così:

  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; 

È importante inserire il simbolo # nel collegamento che conduce a una cella all’interno del libro, se questo simbolo non è inserito, il collegamento viene interrotto.

Ho descritto questa decisione in un articolo in lingua russa, un esempio può essere trovato qui

Spero che qui sotto ti possa aiutare.

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

Per aggiungere un collegamento a un’immagine (già inserita nel foglio):

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

Non lo stai aggiungendo direttamente all’immagine, ma il primo elemento in ShapeRange. (Qualunque cosa sia …)