Может ли Excel интерпретировать ячейку как HTML?
-
12-09-2019 - |
Вопрос
Я использую Aspose.Ячейки для программного создания документа Excel.Это отлично работает.Однако одна из ячеек представляет собой блок необработанного HTML-кода.Мне интересно, можно ли указать Excel (любым способом, включая графический интерфейс - вам не нужно знать Aspose API) для синтаксического анализа и отображения ячейки в виде HTML.Прямо сейчас он просто отображается как необработанный HTML в текстовом формате, с тегами и всем прочим.
Я знаю, что Excel способен вставлять в себя HTML, но похоже, что он просто анализирует его самостоятельно, а затем Excel загружает его для вас, и он не сохраняет HTML, поэтому на самом деле он не анализирует его и не отображает как HTML.Кроме того, я все равно не могу понять, как воспроизвести эту функцию вставки.
Спасибо.
Решение
К сожалению, ответ отрицательный.
Excel имеет два варианта HTML:
- Откройте HTML-файл, который будет вроде как отображать HTML, вроде как, но не будет содержать никакого фактического HTML в ячейках
- Храните HTML в ячейках, но в виде неформатированного текста.
Возможно, вы могли бы придумать макрос, который позволяет вводить HTML-код в ячейку, затем сохранять этот HTML-код в виде документа, открывать его в другом экземпляре Excel, затем извлекать этот форматированный HTML-код и помещать его в исходный документ;таким образом, у вас было бы два столбца, один с HTML-кодом, а другой с выводом.Это было бы очень хотя и неприглядный.Не делай этого :0)
Другие советы
Вставка html-данных в Excel приведет к правильному отображению html-кода в Excel.Единственная проблема с этим заключается в том, что возвраты каретки и табуляции будут вставлены в следующую ячейку.
Dim objData As New DataObject
objData.SetText(sHTML)
Clipboard.SetDataObject(objData)
objRange.PasteSpecial()
Заполнит ячейку правильно отформатированным текстом
Этот код работал для меня в одной ячейке (вдохновленный ответом @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
видишь это Публикация для получения более подробной информации
Я думаю, не должно быть слишком сложно немного настроить его, чтобы он работал для всего листа, а не только для одной конкретной ячейки, вам, вероятно, следует добавить некоторое условие if для переноса этого кода, чтобы предотвратить ошибки, см. этот пост для получения дополнительной информации
Я нашел интересное видео на YouTube, в котором показано, как создать простой интерпретатор HTML (VBA) в Microsoft Excel с помощью элемента управления веб-браузера.Введите свой HTML- и CSS-код в текстовое поле, и форма преобразует HTML-код в веб-предварительный просмотр.
Интерпретатор HTML в Microsoft Excel 2010/2007 - Запись непосредственно в веб-браузер