从Excel单元格中读取富文本

时间:2011-04-12 00:30:34

标签: c# excel

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

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

我想将其转换为:

“这里有一些带有斜体的文字[i]在中间[/ i]”。

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

是否有一种智能方法可以访问我遗漏的Excel单元格中包含的富文本?

2 个答案:

答案 0 :(得分:1)

i dont have answer for your question

但我建议你去研究这个网站  http://www.winnovative-software.com/  从这个网站你可以得到wnuxls.dll 具有我们想要用excel执行的所有功能的文件试试

答案 1 :(得分:1)

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

此处演示的是VBA中的简单UDF,它使用您描述的Italic格式。您可以扩展它以检测您需要的任何其他格式

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