Вопрос

Я использую 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 - Запись непосредственно в веб-браузер

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top