我正在尝试阅读excel电子表格,其中一些单元格包含丰富的文本。我想将其转换为以某种方式编码格式的纯文本格式。例如,考虑到案文:
“这是一些中间带有斜体的文本。”
我想将其转换为:
“下面是在中间/我中间加上斜体的一些文本”。
问题是,我还没有找到从excel单元格中提取富文本的方法。Interop.Office.Excel
允许我获取一个Range
并检查它的Style
属性,但这只告诉我单元格本身是否是斜体;它没有提供有关任何单个字符的信息。我发现的最好的“解决办法”是将单元格的内容复制到剪贴板并调用Clipboard.GetData(System.Windows.DataFormats.Rtf)
,而且速度太慢,不实用。
是否有一种明智的方法来访问包含在excel单元格中的、我正在丢失的富文本?
发布于 2011-04-12 10:59:22
访问字符串中单个字符格式的方法是使用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
发布于 2011-04-12 07:59:35
i dont have answer for your question
但是我建议您从这个站点学习站点http://www.winnovative-software.com/,您可以获得wnuxls.dll文件,它具有我们想要使用excel执行的所有功能。
https://stackoverflow.com/questions/5629084
复制相似问题