用Matlab混合文本颜色读出Excel单元格

我有麻烦读出包含混合颜色文本的Excel单元格的字体信息与Matlab使用ActiveX。

以单元格A1string“ GreenBlueRedBlack ”的excel文件作为示例,其中string的各个部分以指定的颜色显示。

 MyExcel = actxserver('Excel.Application'); Workbook = MyExcel.Workbooks.Open('D:\data\Test.xlsx'); MySheet = MyExcel.ActiveWorkBook.Sheets.Item(1); Text=get(MySheet.Range('A1').Characters,'Text'); Color=MySheet.Range('A1').Characters.Font.Color; % provides NaN for m=1:size(Text,2) % read out letters seperately Color(m)=MySheet.Range('A1').Characters(m,1).Font.Color; end 

代码当然提供NaN索引到整个单元格。 我无法find正确的子索引和循环通过单元格中的每个字母的方法。 如果我理解正确的话, Characters(x,y)应该被提供起始点和单元格想要的子部分的长度。 但是Characters(1,1)只返回NaNCharacters(2,1)以及Characters(1,2)超过matrix的尺寸。

如何subindexing到一个单元格的子string工作? 谢谢。

我发现一个解决方法,也许有人可以从中受益。 将以下代码添加到Excel文件的Module1中。

 Public Function getCellInfo(Row As Variant, Col As Variant, Sheet As Variant) ActiveWorkbook.Sheets(Sheet).Activate Text = Cells(Col)(Row).Text TextLength = Len(Cells(Col)(Row)) Dim Color() As Variant ReDim Color(TextLength) For m = 0 To TextLength - 1 Color(m) = Cells(Col)(Row).Characters(m + 1, 1).Font.Color Next getCellInfo = Color End Function 

然后使用以下命令从Matlab调用macros:

 ColorVector=MyExcel.Run('getCellInfo',Sheet,Row,Col); 

虽然不是很漂亮 如果有人知道一个更优雅的方式,而不调用一个很好的macros。

也许来不及,但这是解决scheme:

 color = MySheet.Range('A1').get('Characters', start, length).Font.Color;