首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Excel单元格读取富文本

从Excel单元格读取富文本
EN

Stack Overflow用户
提问于 2011-04-12 00:30:34
回答 2查看 3K关注 0票数 1

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

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

我想将其转换为:

“下面是在中间/我中间加上斜体的一些文本”。

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

是否有一种明智的方法来访问包含在excel单元格中的、我正在丢失的富文本?

EN

回答 2

Stack Overflow用户

发布于 2011-04-12 10:59:22

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

这里演示的是您描述的意大利格式的VBA中的一个简单的UDF。您可以将其扩展到检测所需的任何其他格式。

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2011-04-12 07:59:35

代码语言:javascript
运行
复制
i dont have answer for your question

但是我建议您从这个站点学习站点http://www.winnovative-software.com/,您可以获得wnuxls.dll文件,它具有我们想要使用excel执行的所有功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5629084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档