我正在使用MATLAB 2017a,过去一直在使用xlswrite
它来执行此操作。我遇到的问题是执行速度,我在寻找更好的方法。因此,我决定actxserver
通过get(obj)
MATLAB和Range.Value
ActiveX使用和写入数据。代码如下所示:
e = actxserver('Excel.Application);
eWorkbook = e.Workbooks.Add;
e.Visible = 1;
eSheets = e.ActiveWorkbook.Sheets;
eSheet1 = eSheets.get('Item',1);
eSheet1.Activate;
A = ["Str1";"Str2";"Str3";];
eActivesheetRange = get(e.Activesheet, 'Range', 'A1:A3');
eActivesheetRange.Value = A;
代码的这种含混不清的位不会执行,也不会引发警告或错误消息。在我看来,eActivesheetRange
评估结果为:Range("A1:A3")
在ActiveX方面。有趣的是,如果我更换
A = ["Str1";"Str2";"Str3";];
与
A = char(["Str1";"Str2";"Str3";]);
然后程序将A char数组写入eActivesheetRange
Range中的每个单元格。
有没有一种cells()
使用MATLABRange.Value
连接进行调用的方法?就cells().Value
可以解决这个问题呢?
我不认为使用ActiveX编写Excel能够string
正确处理类型。在这种情况下,你可以把它简单地转换您的字符串数组到一个工作单元阵列的特征向量使用cellstr
。将您的最后一行代码更改为以下代码对我有用(在R2016b中):
eActivesheetRange.Value = cellstr(A);
用以下内容替换最后两行也可以:
e.Activesheet.Range('A1:A3').Value = cellstr(A);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句