Quelqu'un peut-il me dire comment nous pouvons ajouter un hyperlien dans Excel (2007 ou ultérieure) de une cellule dans une feuille à une cellule dans une autre feuille à l'aide d'un bureau Interop dans .NET (C #) P>
Par exemple: un lien hypertexte à partir de la feuille 1 cellule A1 à la feuille 2 cellule B10 P>
5 Réponses :
Ce que vous voulez utiliser ici est le hyperlinks.add méthode.
Vous pouvez l'appeler avec du code qui ressemble à ceci comme suit: P>
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); }
J'utilisais le paramètre Adresse au lieu de la sous-adresse ... Le premier ne fonctionne pas.
Le point clé que j'avais manqué était que la cellule pointée par le lien hypertexte va dans la sous-adresse. J'essayais de le mettre dans l'adresse
Merci, j'ai pu traduire cela à Delphi et le faire fonctionner:
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;
J'espère que ci-dessous 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");
Pour ajouter un lien à 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");
@Mike Rosenblums Répondre Traduit sur Delphi qui fonctionne également:
uses Excel2000; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var AExcelApplication: ExcelApplication; AExcelWorkSheet: ExcelWorkSheet; ARange: Range; hyperlinkTargetAddress:String; begin AExcelApplication := CoExcelApplication.Create; AExcelApplication.Visible[0] := true; AExcelApplication.Workbooks.Add('',0); AExcelApplication.Worksheets.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0); AExcelApplication.Worksheets.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0); AExcelWorkSheet := AExcelApplication.Worksheets.Item[1] as ExcelWorkSheet; ARange := AExcelWorkSheet.Range['A1','A1']; hyperlinkTargetAddress := 'Sheet2!A1'; AExcelWorkSheet.Hyperlinks.Add( ARange, '', hyperlinkTargetAddress, 'Screen Tip Text', 'Hyperlink Title1' ); ARange := AExcelWorkSheet.Range['A2','A2']; AExcelWorkSheet.Hyperlinks.Add( ARange, '', 'Sheet1!A1', 'Screen Tip Text', 'Hyperlink Title2' ); end;