Я использую 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;
Этот безобидный бит кода не выполняется и не выдает предупреждение или сообщение об ошибке. Nothin '.На мой взгляд, eActivesheetRange
оценивается как Range("A1:A3")
на стороне ActiveX.Интересно, что если я заменю
A = ["Str1";"Str2";"Str3";];
на
A = char(["Str1";"Str2";"Str3";]);
, тогда программа записывает массив A char в каждую ячейку в диапазоне eActivesheetRange
.
Есть лиспособ вызова cells()
с использованием соединения MATLAB Range.Value
?cells().Value
сможет решить эту проблему?