10
votes

Ajout d'hyperliens dans Excel [2007] en C # - Incel IT Self

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 #)

Par exemple: un lien hypertexte à partir de la feuille 1 cellule A1 à la feuille 2 cellule B10


0 commentaires

5 Réponses :


9
votes

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


3 commentaires

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:



2
votes

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;


0 commentaires

0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

@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;


0 commentaires