从Excel单元格读取富文本

我正在尝试阅读其中一些单元格包含丰富文本的Excel电子表格。 我想将其转换为以某种方式对格式进行编码的纯文本格式。 例如,给出的文字:

“这里有一些斜体的文字。”

我想将其转换为:

“这是一些文字[我]在它的中间斜体[/ i]”。

问题是,我还没有find一种方法来从Excel单元格中提取富文本。 Interop.Office.Excel允许我获得一个Range并检查它的Style属性,但是它只能告诉我单元格是否被斜体化; 它不会给我关于任何单个字符的信息。 我find的最好的“解决scheme”包括将单元格的内容复制到剪贴板,并调用Clipboard.GetData(System.Windows.DataFormats.Rtf) ,这太慢了,不实用。

有没有一种聪明的方式来访问我所缺less的Excel单元格中包含的丰富文本?

访问string中单个字符格式的方法是使用Range.Characters对象

这里演示的是VBA中的一个简单的UDF,它可以用你描述的斜体格式。 您可以扩展它来检测您需要的任何其他格式

 Function DecodeText(r As Range) As Variant Dim strDecoded As String Dim bItalic As Boolean Dim i As Long, j As Long If TypeName(r.Value) = "String" Then bItalic = False strDecoded = r j = 1 For i = 1 To Len(strDecoded) If Not bItalic And r.Characters(i, 1).Font.Italic Then strDecoded = Left(strDecoded, j - 1) & "[i]" & Mid(strDecoded, j) bItalic = True j = j + 3 ElseIf bItalic And Not r.Characters(i, 1).Font.Italic Then strDecoded = Left(strDecoded, j - 1) & "[/i]" & Mid(strDecoded, j) bItalic = False j = j + 4 End If j = j + 1 Next If bItalic Then strDecoded = strDecoded & "[/i]" DecodeText = strDecoded Else DecodeText = r End If End Function