在SQL Server中的RTF到TEXT

时间:2010-06-07 06:36:09

标签: sql sql-server-2005

我的SQL 2005表中有一个RTF字段,我需要将其转换为Text并显示它。 经过快速研究后,我得到了以下方法......

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 个答案:

答案 0 :(得分:1)

我也有同样的要求,但我不想在SQL Server中使用任何richtext控件dll或CLR。我通过在我的服务/数据库层项目中引用System.Windows.Form.dll来做同样的事情。将该库导入.cs文件的顶部我们导入/使用我们所需的库,并执行下面的代码。它真的解决了我的问题。您也可以尝试这个,如果您遇到任何问题,请告诉我。

步骤在RTF中将RTF转换为没有RichTextControl ocx / dll或CLR的文本

1)在您的项目中将Referance添加到System.Windows.Forms.dll(最好在ServiceLayer / DataBase Layer / Domain Model Layer / Business Logic Layer中添加此参考)

2)在您的类文件中导入/使用它,我们在类顶部导入/使用所需的namesapce

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

答案 1 :(得分:0)

这看起来像是使用CLR创建RichTextBox控件。

你检查了那个

  • RichText OCX驻留在SQL Server上
  • 已启用CLR
  • 启用了OLE(IIRC这是通过Surface Area Tool)

有一个线程here使用非常相似的代码(如果不是相同的代码)。

或者,正如您对SSRS所需要的那样,有一篇很好的文章here解释了如何通过SSRS将RTF转换为文本。