8
votes

Extraire une URL du texte hyperliété dans la cellule Excel

J'ai une table pleine de texte hyperlié dans Excel, c'est donc fondamentalement un tas de noms, mais lorsque je clique sur un, cela me prend sur une URL dans mon navigateur par défaut.

donc je suis donc extraire du texte de cette excellence table dans mon programme, mais la valeur que je reçois lorsque j'extraire à partir de ces cellules d'hyperlien est celle de la chaîne à l'intérieur, lorsque je souhaite l'URL, la chaîne est liée dans le fichier Excel.

donc je suis donc Penser qu'il y a deux façons de faire cela. Soit je peux convertir tout le texte hyperliété dans le fichier Excel vers les URL correspondantes, soit je peux utiliser C # pour extraire de la valeur de l'URL de la cellule et non le texte.

Je ne sais pas comment faites l'une de ces choses, mais toute aide serait grandement appréciée.

C # code jusqu'à présent: xxx

comme pour le fichier Excel, c'est juste un Longue rangée de noms hyperliens. Par exemple, la cellule A2 contiendrait le texte:

Recette de cookie délicieuse < / a>

et je veux extraire la chaîne: xxx


2 commentaires

Afficher l'exemple Excel et certains code


J'ai montré du code, mais le fichier Excel n'est qu'une colonne de texte hyperliété avec des entrées exactement comme l'exemple de cookie présenté ci-dessus.


8 Réponses :


0
votes

Pourquoi ne pas utiliser la classe URI pour convertir la chaîne en URL:

Uri uri = new Uri("http://myUrl/test.html");


1 commentaires

Comment obtenez-vous l'URL de chaîne de la colonne hyperliétée?



2
votes

Utiliser des outils Visual Studio pour Office (VSTO) pour ouvrir un classeur Excel et extraire tous les hyperliens.


I Mettez un lien hypertexte dans A1 de feuille1 dans Book1.xlsx: Text = "Exemple.com, adresse =" http://www.example.com " xxx

sortie: xxx


3 commentaires

J'apprécie la réponse, mais la syntaxe ne fonctionnait pas sur mon système et j'ai eu le travail de plus sur le côté Excel des choses à l'aide de mon programme C # un peu.


@AJ: Quelle version d'Excel et VSTO utilisez-vous? J'ai utilisé le dernier, .NET 4.0 / vs 2010 / Excel 14


J'utilise Excel 2003. Le programme est effectivement effectué maintenant et génère une base de données. Mais comme il y a 2700 entrées, cela peut prendre environ 7 à 10 heures pour finir> _>



10
votes

Vous pouvez utiliser une macro VBA:

Hit alt kbd> + f11 kbd> pour ouvrir l'éditeur VBA et coller dans les éléments suivants: p>

Function URL(rg As Range) As String
  Dim Hyper As Hyperlink
  Set Hyper = rg.Hyperlinks.Item(1)
  URL = Hyper.Address
End Function


1 commentaires

Merci beaucoup, je viens d'utiliser cela pour extraire tous les liens vers une autre partie de la table à l'aide de mon programme, puis je les copie / les colla vers une nouvelle table Excel. Messy, mais le résultat final est exactement ce que je voulais.



7
votes

Dans votre code, ajouter

string myString = ((Excel.Range)xlws.Cells[2, 1]).Cells.Hyperlinks[1].Address;


1 commentaires

C'est la meilleure réponse d'une perspective de codage. Il ne nécessite pas de modification de la feuille de calcul Excel. J'ai trouvé nécessaire de changer xlws.Cells vers XLWS.SHIQUES [1] .Cells.



5
votes

Fonction VBA:

  1. HIT ALT + F11 (Ouvre Visual Basic Editor)
  2. Cliquez sur Insérer -> Module (Ajoute un module à votre fichier Excel)
  3. Collez le code ci-dessous pour la fonction de GetURL
  4. hit alt + q (ferme l'éditeur Visual Basic)

    Utilisez maintenant le = getURL ( cellule ) pour obtenir l'URL
    Exemple: = getURL (A1) retournera l'URL pour le lien hypertexte affiché dans la cellule A1 xxx

    source


0 commentaires

0
votes

Vous pouvez utiliser le code VBA pour y parvenir. Appuyez sur alt code> + F11 code> pour ouvrir l'éditeur VB, insérez un module code> Coller et coller le code ci-dessous:

Sub run()    
    On Error Resume Next    

    For Each hLink In Selection    
        Range(hLink.Address).Offset(0, 1) = hLink.Hyperlinks(1).Address    
    Next    
End Sub


0 commentaires

-1
votes

Je viens de courir dans ce numéro et c'est ce qui a fonctionné pour moi:

J'ai utilisé la méthode de l'extension Formulaire1C1 pour une plage. Donc, mon code ressemblait à ceci: xxx

Lorsque l'enregistrement est ajouté à la liste des enregistrements, la valeur de la plage de cellules a été formatée dans un hyperlien cliquable. < / p>


0 commentaires

0
votes

Essayez ceci:

Excel.Application appExcel = new Excel.Application();
Excel.Workbooks workBooks = appExcel.Workbooks;
Excel.Workbook excelSheet = workBooks.Open("......EditPath", false, ReadOnly: true);

foreach (Excel.Worksheet worksheet in excelSheet.Worksheets)
{
    Excel.Hyperlinks hyperLinks = worksheet.Hyperlinks;
    foreach (Excel.Hyperlink lin in hyperLinks)
    {
        System.Diagnostics.Debug.WriteLine("# LINK: adress:" + lin.Address);
    }
}


0 commentaires