RTF в текст на сервере sql - PullRequest
3 голосов
/ 07 июня 2010

В моей таблице SQL 2005 есть поле RTF, мне нужно преобразовать его в текст и отобразить его. После быстрого исследования я получил следующий метод ...

create function dbo.RTF2TXT(@in varchar(8000)) RETURNS  varchar(8000) AS 
BEGIN

DECLARE @object int
DECLARE @hr int
DECLARE @out varchar(8000)

-- Create an object that points to the SQL Server
EXEC @hr = sp_OACreate 'RICHTEXT.RichtextCtrl', @object OUT
EXEC @hr = sp_OASetProperty @object, 'TextRTF', @in
EXEC @hr = sp_OAGetProperty @object, 'Text', @out OUT
EXEC @hr = sp_OADestroy @object
return @out

END
GO

select dbo.RTF2TXT('{\rtf1\ansi\ansicpg1252\uc1 aaa}')

Но в результате я получаю только NULL ... В чем может быть проблема, предложите

Ответы [ 2 ]

1 голос
/ 07 августа 2011

У меня тоже такое же требование, но я предпочитаю не использовать никакой dll или CLR элемента управления richtext в SQL Server. Я делаю то же самое, беря ссылку на System.Windows.Form.dll в моем проекте уровня сервиса / базы данных. Импортируйте эту библиотеку вверху файла .cs, где мы импортируем / используем нашу необходимую библиотеку для этого класса и делаем код ниже. И это действительно решит мою проблему. Вы также можете попробовать это и сообщить мне, если у вас возникнут какие-либо проблемы.

ШАГИ Для преобразования RTF в текст без RichTextControl ocx / dll или CLR в SQL Server

1) В вашем проекте Добавить ссылку на System.Windows.Forms.dll (желательно добавить эту ссылку в ServiceLayer / Уровень базы данных / Уровень модели домена / Уровень бизнес-логики)

2) Импортируйте / используйте его в вашем файле класса, где мы импортируем / используем требуемые имена в верхней части класса

VB.Net --> Import Systems.Windows.Forms
C#.Net --> using System.Windows.Forms;

3) Добавьте ниже код, где вы хотите конвертировать ваш RTF в обычный текст

 System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
 rtBox.Rtf = actionNotes.Notes; // <your database table's RTF field data assigned to rtBox's Rtf property>
 string s = rtBox.Text; //This will convert your assignd RTF Field data in Plain Text

 return s;   //Return this string veriable or assign it to the control where you want to display your data in Plain Text format
0 голосов
/ 07 июня 2010

Похоже, что он использует CLR для создания элемента управления RichTextBox.

Вы проверили, что

  • RichText OCX находится на SQL Server
  • CLR включен
  • OLE включен (IIRC это черезИнструмент Поверхность)

Здесь есть нить здесь , которая использует очень похожий, если не тот же код, что и у вас.

В качестве альтернативы, как выэто нужно для SSRS, есть хорошая статья здесь , которая объясняет, как конвертировать RTF в текст через SSRS.

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