Может ли Excel интерпретировать ячейку как HTML? - PullRequest
23 голосов
/ 03 декабря 2009

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

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

Спасибо.

Ответы [ 4 ]

13 голосов
/ 04 декабря 2009

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

В Excel есть две опции HTML:

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

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

9 голосов
/ 14 декабря 2011

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

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

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

0 голосов
/ 28 октября 2016

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

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

0 голосов
/ 23 марта 2014

Этот код работал для меня в одной ячейке (вдохновленный ответом @ Рика, но с небольшими изменениями, потому что 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

см. сообщение для более подробной информации

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

...