从Excel单元格中读取富文本

本文关键字:文本 读取 Excel 单元格 | 更新日期: 2023-09-27 17:49:53

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

"这里有一些文本中间有斜体。"

我想把它转换成:

"这里有一些文本[i]中间有斜体[/i] "。

问题是我没有找到从excel单元格中提取富文本的方法。Interop.Office.Excel允许我获得Range并检查其Style属性,但这只告诉我单元格本身是否斜体;它没有给我任何关于单个角色的信息。我发现最好的"解决方案"包括将单元格的内容复制到剪贴板并调用Clipboard.GetData(System.Windows.DataFormats.Rtf),并且它太慢而不实用。

是否有一个聪明的方法来访问包含在一个excel单元格,我错过了丰富的文本?

从Excel单元格中读取富文本

访问字符串中单个字符的格式的方法是使用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
i dont have answer for your question

但是我建议你研究一下这个网站http://www.winnovative-software.com/从这个站点您可以获得wnuxls.dll包含excel中所有功能的文件试试