Pergunta

Eu estou usando Aspose.Cells para construir um documento Excel programaticamente. Isso funciona muito bem. Uma das células, porém, é um bloco de HTML cru. Eu estou querendo saber se é possível dizer Excel (de qualquer forma, incluindo a GUI - você não precisa saber a API Aspose) para analisar e exibir uma célula como HTML. Agora, isso só mostra-se como o HTML bruto em formato de texto, tags e todos.

Eu sei Excel é capaz de ter HTML colado nele, mas parece que ele só analisa-lo por conta própria e, em seguida, Excel-ifies-lo para você, e não armazenar o HTML, então não é realmente analisá-lo e exibi-lo como HTML. Além disso, eu não consigo descobrir como replicar essa funcionalidade pasta de qualquer maneira.

Graças.

Foi útil?

Solução

Infelizmente, a resposta é não.

Excel tem duas opções HTML:

  • Abra um arquivo HTML, que tipo de tornar o HTML, mais ou menos, mas não irá conter qualquer HTML real em células
  • Loja HTML nas células, mas como texto não formatado.

Você poderia, talvez, possivelmente, chegar a uma macro que permite inserir HTML em uma célula, em seguida, salva o HTML como um documento, abre-se em outra instância do Excel, em seguida, agarra que formatado HTML e coloca-o no documento original; Dessa forma, você teria duas colunas, uma com o HTML, e um com a saída. Seria muito feio embora. Não fazê-lo: 0)

Outras dicas

Colar HTML dados em excel irá resultar no html que está sendo exibido corretamente no Excel. A um problema com isto é que os retornos de carruagem e abas serão coladas para a célula seguinte.

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

Será que preencher uma célula com texto corretamente formatado

Este código trabalhou para mim em uma célula (inspirado @ resposta de Rick, mas com poucas mudanças porque Clipboard.SetDataObject(objData) causou erro e também objRange.PasteSpecial() não funcionou):

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

pós para mais alguns detalhes

Eu acho que não deve ser muito difícil para ajustá-lo um pouco que ele iria trabalhar para toda a planilha e não apenas uma célula específica, você provavelmente deve adicionar algum se a condição para quebrar este código, a fim de evitar erros, veja < a href = "https://stackoverflow.com/questions/9999713/html-text-with-tags-to-formatted-text-in-an-excel-cell"> este post para obter mais algumas informações

Eu encontrei um vídeo do YouTube interessante que mostra como criar um simples HTML Interpreter (VBA) no Microsoft Excel usando o controle de navegador web. Digite o seu código HTML e CSS em uma caixa de texto, e a forma irá converter o HTML em uma pré-visualização web.

HTML Interpreter no Microsoft Excel 2010/2007 - Escrever diretamente para Web Browser

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top