J'utilise Aspose.Cells pour créer un document Excel par programme. Cela fonctionne très bien. Cependant, l'une des cellules est un bloc de code HTML brut. Je me demande s'il est possible de dire à Excel (de toute façon, y compris l'interface graphique - vous n'avez pas besoin de connaître l'API Aspose) d'analyser et d'afficher une cellule au format HTML. À l'heure actuelle, il apparaît simplement en tant que HTML brut au format texte, balises et tout.
Je sais qu'Excel est capable d'avoir du HTML collé dedans, mais on dirait qu'il le analyse juste par lui-même, puis Excel le fait pour vous, et il ne stocke pas le HTML, donc il ne le fait pas réellement en le analysant et en l'affichant au format HTML. De plus, je ne peux pas comprendre comment répliquer cette fonctionnalité de pâte de toute façon.
Merci.
Malheureusement, la réponse est non.
Excel a deux options HTML:
Vous pouvez, peut-être éventuellement, proposer une macro qui vous permet d'entrer du HTML dans une cellule, puis enregistre ce HTML en tant que document, l'ouvre dans une autre instance d'Excel, puis récupère ce HTML formaté et le place dans le document d'origine; de cette façon, vous auriez deux colonnes, une avec le code HTML et l'autre avec la sortie. Ce serait très disgracieux cependant. Ne le faites pas: 0)
Si vous collez des données html dans Excel, le html sera correctement affiché dans Excel. Le seul problème avec cela est que les retours chariot et les tabulations seront collés dans la cellule suivante.
Dim objData As New DataObject
objData.SetText(sHTML)
Clipboard.SetDataObject(objData)
objRange.PasteSpecial()
Remplira une cellule avec du texte correctement formaté
J'ai trouvé une vidéo YouTube intéressante qui montre comment créer un simple interpréteur HTML (VBA) dans Microsoft Excel à l'aide du contrôle du navigateur Web. Entrez votre code HTML et CSS dans une zone de texte, et le formulaire convertira le code HTML en aperçu Web.
Interprète HTML dans Microsoft Excel 2010/2007 - Écrivez directement dans le navigateur Web
Ce code a fonctionné pour moi sur une cellule (inspiré par la réponse de @ Rick, mais avec peu de changements car Clipboard.SetDataObject(objData)
a provoqué une erreur et aussi objRange.PasteSpecial()
n'a pas fonctionné):
Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet)
Dim objData As DataObject 'Set a reference to MS Forms 2.0'
Dim sHTML As String
Dim sSelAdd As String
Application.EnableEvents = False
objData = New DataObject
sHTML = Target.Text
objData.SetText sHTML
objData.PutInClipboard
sht.PasteSpecial Format:="Unicode Text"
Application.EnableEvents = True
End Sub
Sub test()
Dim rng As Range
Set rng = ActiveSheet.Range("F15") 'cell to change'
Worksheet_Change2 rng, ActiveSheet
End Sub
voir ceci post pour plus de détails
Je suppose qu'il ne devrait pas être trop difficile de l'ajuster un peu pour que cela fonctionne pour toute la feuille de calcul et pas seulement pour une cellule spécifique, vous devriez probablement en ajouter une condition if pour envelopper ce code afin d'éviter les erreurs, voir cet article pour plus d'informations