我正在编写查询以将通过供应商创建的文字处理器输入的文本提取到Oracle数据库,我需要将其导出到Word或Excel。文本被输入备忘录字段,文本与文字处理器用于不同功能的代码交织(粗体,缩进,硬返回,字体大小等)。
我已经使用了替换功能来解析许多更常见的代码,但是有很多变化,几乎不可能完全捕获它们。有没有办法做到这一点?不幸的是,我仅限于使用Microsoft Access 2010来尝试实现这一目标。
我发现的共同点是所有代码都以反斜杠开头,我希望能够删除以反斜杠开头的所有字符串,直到下一个空格为止所有代码都从最终文本中删除。
以下是与我合作的文字的简短示例:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Times New Roman;
\viewkind4\uc1\pard\f0\fs36 An abbreviated survey was conducted
on 02/02/15 to investigate complaint #OK000227. \par
No deficiencies were cited.\par
\fs20\par
}}
答案 0 :(得分:1)
如果您的计算机安装了Microsoft Word,那么您已经拥有了一个RTF解析器,因此您不必自己动手#34;。您可以让Word打开RTF文档并将其保存为纯文本,如下所示:
Option Compare Database
Option Explicit
Public Function RtfToPlainText(rtfText As Variant) As Variant
Dim rtn As Variant
Dim tempFolder As String, rtfPath As String, txtPath As String
Dim fso As Object ' FileSystemObject
Dim f As Object ' TextStream
Dim wordApp As Object ' Word.Application
Dim wordDoc As Object ' Word.Document
Dim tempFileName As String
tempFileName = "~RtfToPlainText"
If IsNull(rtfText) Then
rtn = Null
Else
' save RTF text as file
Set fso = CreateObject("Scripting.FileSystemObject")
tempFolder = fso.GetSpecialFolder(2) ' Temporaryfolder
rtfPath = tempFolder & "\" & tempFileName & ".rtf"
Set f = fso.CreateTextFile(rtfPath)
f.Write rtfText
f.Close
Set f = Nothing
' open in Word and save as plain text
Set wordApp = CreateObject("Word.Application")
Set wordDoc = wordApp.Documents.Open(rtfPath)
txtPath = tempFolder & "\" & tempFileName & ".txt"
wordDoc.SaveAs2 txtPath, 2 ' wdFormatText
wordDoc.Close False
Set wordDoc = Nothing
wordApp.Quit False
Set wordApp = Nothing
fso.DeleteFile rtfPath
' retrieve plain text
Set f = fso.OpenTextFile(txtPath)
rtn = f.ReadAll
f.Close
Set f = Nothing
fso.DeleteFile txtPath
Set fso = Nothing
End If
RtfToPlainText = rtn
End Function
然后,如果你有一个包含两个备注字段的表 - [rtfText]和[plainText] - 你可以使用Access中的以下查询将纯文本提取到第二个备注字段中:
UPDATE rtfTestTable SET plainText = RtfToPlainText([rtfText]);
答案 1 :(得分:0)
您正在使用的文字是RTF。 Here is a tutorial关于文件格式。
This link(在另一个网站上,需要注册)可能会给你副本&粘贴您可以用来将rtf字段转换为txt的代码。
您可以从数据库中复制字段的值并将其粘贴到记事本中,然后将记事本文件保存为“test.rtf”...然后您可以双击文件图标并打开文档。
RTF是一种旧的MS文件格式,允许格式化文本。见this wikipedia page.