Подтвердить что ты не робот

Может ли Excel интерпретировать ячейку как HTML?

Я использую Aspose.Cells для создания документа Excel программно. Это отлично работает. Одна из ячеек, однако, является блоком необработанного HTML. Мне интересно, можно ли сказать Excel (каким-либо образом, включая графический интерфейс - вам не нужно знать API-интерфейс Aspose), чтобы анализировать и отображать ячейку как HTML. Прямо сейчас, он просто отображается как необработанный HTML в текстовом формате, тегах и всех.

Я знаю, что Excel способен вставлять в него HTML, но похоже, что он просто анализирует его сам по себе, а затем Excel - делает его для вас, и он не хранит HTML, поэтому он фактически не анализирует его и отображать его как HTML. Кроме того, я не могу понять, как в любом случае повторить эту функцию пасты.

Спасибо.

4b9b3361

Ответ 1

К сожалению, ответа нет.

Excel имеет два варианта HTML:

  • Откройте HTML файл, который будет сортировать визуализацию HTML, сортировать, но не будет содержать никакого фактического HTML в ячейках
  • Хранить HTML в ячейках, но как неформатированный текст.

Возможно, возможно, придумайте макрос, который позволяет вводить HTML в ячейку, а затем сохраняет этот HTML как документ, открывает его в другом экземпляре Excel, затем захватывает этот отформатированный HTML и помещает его в оригинальный документ; таким образом у вас будет два столбца: один с HTML и один с выходом. Тем не менее, он был бы очень неприглядным. Не делайте этого: 0)

Ответ 2

Вставка html-данных в excel приведет к тому, что html будет правильно отображаться в excel. Одной из проблем является то, что возврат каретки и вкладки будут вставлены в следующую ячейку.

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

Заполнит ячейку правильно сформированным текстом

Ответ 3

Этот код работал у меня на одной ячейке (на основе ответа @Rick, но с небольшими изменениями, потому что Clipboard.SetDataObject(objData) вызвала ошибку, а также objRange.PasteSpecial() не работала):

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

см. этот пост для получения более подробной информации

Я думаю, не должно быть слишком сложно настроить его немного, чтобы он работал на весь рабочий лист, а не только на одну конкретную ячейку. Вероятно, вы должны добавить какое-либо условие, чтобы обернуть этот код, чтобы предотвратить ошибки, см. этот пост для получения дополнительной информации

Ответ 4

Я нашел интересное видео на YouTube, в котором показано, как создать простой HTML-интерпретатор (VBA) в Microsoft Excel с помощью элемента управления веб-браузера. Введите код HTML и CSS в текстовое поле, и форма преобразует HTML в веб-предварительный просмотр.

HTML-интерпретатор в Microsoft Excel 2010/2007 - запись непосредственно в веб-браузер