用Matlab混合文本颜色读出Excel单元格
我有麻烦读出包含混合颜色文本的Excel单元格的字体信息与Matlab使用ActiveX。
以单元格A1
string“ 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)
只返回NaN
和Characters(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;
- python XlsxWriter:设置字体不会影响输出excel文件中单元格的外观
- 使用VBA从Excel电子表格格式化Illustrator中的斜体
- GemBox Spreadsheet:一个单元格中的多种字体颜色
- 使用Excel VBA生成二维(PDF417或QR)条形码
- python win32com excel中如何改变单元格中单个字符的颜色?
- 我可以使用“常规”格式更改单元格中特定数字的字体吗?
- 使用C#设置Excel工作表的字体
- 在Excel 2010中需要使用vba删除所有<font>,</ font>和<Font Color =“000000”> html标记
- 对象'Font'的方法'颜色'失败