【问题标题】:Reading rich text from an Excel cell从 Excel 单元格中读取富文本
【发布时间】:2011-04-12 19:14:03
【问题描述】:

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

“这里有一些文本中间是斜体。”

我想把它转换成:

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

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

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

【问题讨论】:

标签: c# excel


【解决方案1】:

访问字符串中单个字符格式的方法是使用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

【讨论】:

  • 问题在于,这比前面提到的将富文本复制到剪贴板的解决方案还要慢。单独调用 excel 来读取每个字符实际上并不可行。我正在寻找一种方法来一次阅读所有内容,然后自己解析。
【解决方案2】:
i dont have answer for your question

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多