2009-12-03 50 views
21

Estoy usando Aspose.Cells para compilar un documento de Excel mediante programación. Esto funciona genial Una de las celdas, sin embargo, es un bloque de HTML sin formato. Me pregunto si es posible decirle a Excel (de alguna manera, incluida la GUI, no necesita conocer la API de Aspose) que analice y muestre una celda como HTML. En este momento, simplemente aparece como el HTML sin procesar en formato de texto, etiquetas y todo.¿Puede Excel interpretar una celda como HTML?

Sé que Excel es capaz de pegar HTML, pero parece que lo analiza solo y luego lo actualiza en Excel, y no almacena el HTML, por lo que no está analizando en realidad y mostrarlo como HTML. Además, no puedo encontrar la manera de replicar esta funcionalidad de pegar de todos modos.

Gracias.

+0

preguntas en mi humilde opinión Excel encajan más en superuser.com – Phil

+0

@phil - esto es, sin duda programación relacionada. ahora tengo que volver a votar para cancelar tu voto negativo. – Jason

+0

He hecho una pregunta que incluye cómo replicar esta funcionalidad de pegado. La esencia básica de la pregunta es preguntar si hay una mejor manera. http: // stackoverflow.com/q/14904641/258482 –

Respuesta

13

Lamentablemente, la respuesta es no.

Excel tiene dos opciones: HTML

  • Abrir un archivo HTML, que tipo de hacer que el HTML, más o menos, pero no contendrá ningún HTML real en las células
  • tienda HTML en las células, pero como texto sin formato.

Posiblemente, se le ocurra una macro que le permite ingresar HTML en una celda, luego guarda ese HTML como documento, lo abre en otra instancia de Excel, luego toma ese formato de HTML y lugares en el documento original; de esa forma tendrías dos columnas, una con el HTML y otra con la salida. Sería muy antiestético. No lo haga: 0)

+0

Sé que esta publicación es muy antigua, pero eche un vistazo a http://stackoverflow.com/questions/9999713/html-text-with-tags-to-formatted-text-in-an-excel-cell –

+0

Supongo que no tengo suerte aquí: http://stackoverflow.com/questions/27828366/how-to-take-thelastlast-column-of-a-row-and-compile-the-html?noredirect=1 # comment44063498_27828366? – SearchForKnowledge

9

Pegar datos html en excel dará como resultado que el html se muestre correctamente en excel. El único problema con esto es que los retornos de carro y las pestañas se pegarán en la siguiente celda.

Dim objData As New DataObject 
objData.SetText(sHTML) 
Clipboard.SetDataObject(objData) 
objRange.PasteSpecial() 

va a llenar un celular con el texto correctamente formateado

+0

Dónde está el objeto del portapapeles. –

+0

Usaría 'objData.PutInClipboard' en lugar de' Clipboard.SetDataObject (objData) 'y' sheet.PasteSpecial Format: = "Texto Unicode" 'en lugar de' objRange.PasteSpecial() '(¿por qué? Porque provocaron un error de compilación para mi..) – BornToCode

0

Este código trabajó para mí en una celda (inspirado por @ respuesta de Rick, pero con algunos cambios, porque Clipboard.SetDataObject(objData) causó el error y también objRange.PasteSpecial() no funcionó) :

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 

ver este post de algunos detalles más

supongo que no debería b Es demasiado difícil ajustarlo un poco para que funcione para toda la hoja de cálculo y no solo para una celda específica, probablemente debería agregar alguna condición si para envolver este código para evitar errores, vea this post para obtener más información

Cuestiones relacionadas