我的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 ... 可能是什么问题,请建议
答案 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)