2017-02-09 14 views
1

Мы используем редактор TinyMCE для хранения Rich Text в базе данных MS SQL.vb.net Создание документа, обработка большего и меньшего, чем символы в Word

При использовании «<» & «>» символы TinyMCE преобразует их в символы с экранированным HTML & lt; и & gt; Пример: <p>&lt;This is some test information then sometime I use this&gt;</p>

Мы пытаемся экспортировать эти символы в документ Microsoft Word с использованием автоматизации документов, однако символы не отображаются в документе.

Function PreFormatHTML(ByVal html As String) As String 

     If String.IsNullOrEmpty(html) Then Return html 

     html = WebUtility.HtmlDecode(html) 

     Return html 

    End Function 

Dim SumRng As Word.Range = objWordDoc.Bookmarks.Item("bSummary").Range 

SumRng.Text = PreFormatHTML(GeneralComponent.CheckReadNull(SqlReader.Item("Summary"))) 

Это также не работает. Я использую текстовый редактор Word 2013 и TinyMCE.

Любые предложения?

+0

eek ... Задайте себе вопрос ... какие символы использует HTML для идентификации и обертывания объектов ...> и% lt; являются стандартными символами escape-последовательности, которые позволяют вам по-прежнему использовать < & > в тексте. –

+0

Да, я понимаю, почему он не появляется. Он считает, что это пустой тег HTML. Проблема в том, что когда я использую & gt; & lt; lt, Word не собирает ее. Это просто отображение & gt; & lt; & lt; Вместо «<" ">» –

+0

тогда вам нужно быть более конкретным .., где текст, исходящий из ... где вы его помещаете. –

ответ

1

Не видя полную html я могу только сделать предположение, однако, что я предложил бы использовать WebUtility.HtmlDecode:

Преобразует строку, которая была HTML-закодированной для передачи HTTP в расшифрованную строку.

Это, как вы бы использовать:

html = WebUtility.HtmlDecode(html) 

С Word это, как я испытал:

Dim s As String = "&lt;this is some text and I'm wondering what to do&gt;" 

Dim wrd As New Word.Application 
Dim doc As Word.Document = wrd.Documents.Add() 
Dim para As Word.Paragraph = doc.Content.Paragraphs.Add() 

para.Range.Text = WebUtility.HtmlDecode(s) 

Это то, что текст выглядит в моем Document:

enter image description here

Отредактировано согласно комментарий OP в:

Dim s As String = "<p>&lt;This is some test information then sometime I use this&gt;</p>" 

Dim wrd As New Word.Application 
Dim doc As Word.Document = wrd.Documents.Add() 
Dim para As Word.Paragraph = doc.Content.Paragraphs.Add() 

para.Range.Text = WebUtility.HtmlDecode(s) 

Этот код производит следующий вывод в моем Document:

enter image description here

Отредактировано согласно обновления OP на вопрос:

Я создал документ под названием test.docx и добавил закладку под названием bSummary. Я сделал это, пытаясь воспроизвести код OP.

Dim s As String = "<p>&lt;This is some test information then sometime I use this&gt;</p>" 

Dim wrd As New Word.Application 
Dim doc As Word.Document = wrd.Documents.Open("C:\test.docx") 

Dim SumRng As Word.Range = doc.Bookmarks.Item("bSummary").Range 
SumRng.Text = PreFormatHTML(s) 

Выход такой же, как указано выше. Это заставляет меня думать, что все, что передается в PreFormatHTML, не так, как вы думаете. Is GeneralComponent.CheckReadNull(SqlReader.Item("Summary"))) переходит в PreFormatHTML следующую строку; <p>&lt;This is some test information then sometime I use this&gt;</p>?

ОП подтвердил, что HTML возвращается из PrrFormatHTML, как ожидалось. Проблемы, похоже, связаны с Document. Это может быть связано с версией Word Interop, которую использует OP. Я использую Microsoft Word 16.0 Object Library, в то время как OP использует Microsoft Word 15.0 Object Library.

+0

Работает только для> Например, попробуйте это:'

< Это некоторая тестовая информация, а затем я использую это >

' Тогда ничего не появляется. Я уточню свой вопрос более подробно. –

+0

@DaleLawrence, что вы ожидаете увидеть в своем документе? Например: '

<Это некоторая тестовая информация, а затем я использую это>

'? – Bugs

+0

Да, я просто хочу экспортировать как < and > в том же предложении, но <не отображается вообще. Если они оба используются, текст между ними и символы не отображаются. –