2014-09-08 4 views
0

Есть ли способ экспортировать все переменные из рабочего пространства в таблицу Excel или файл csv автоматически. У меня есть 100 + переменных, и я не хочу итеративно экспортировать одну переменную за раз, ссылаясь на каждую переменную по имени, если это возможно.Экспорт всех значений из рабочей области в excel или csv

+1

Если у вас есть более 100 переменных в первую очередь, вам может потребоваться второй взгляд на ваш код. В коде MATLAB часто это означает, что вы используете несколько именованных переменных, где вы должны использовать одну большую матрицу, массив ячеек или структуру для хранения данных. – nkjt

ответ

3

Вы можете написать каждую переменную на другой лист в таблице:

S = whos; %// get all variables 
xslfilename = 'savedFile.xslx'; 
for ii = 1:numel(S) 
    cmd = sprintf('xslwrite(xslfilename, %s, ''%s'');', S(ii).name, S(ii).name); 
    eval(cmd); %// not very happy with using `eval`... 
end 

Использование whos перечислить все переменные в настоящее время в рабочем пространстве и xlswrite писать каждую переменную на другой лист того же самого файла XLS.

При чтении файла вы можете использовать xlsinfo, чтобы получить все листы имена

[status,sheets] = xlsfinfo(xslfilename); %// get all sheet names = variable names 

Теперь вы можете прочитать каждую переменную из каждого листа, используя xslread.

+1

Почему вы не довольны линией eval? – Ajoy

+1

'eval' не является хорошей практикой. вы можете понять, почему [здесь] (http://www.mathworks.com/help/matlab/matlab_prog/string-evaluation.html#bs7kmd5). – Shai

0

Возможно, это не то, что вы ищете, но если вы пытаетесь сохранить рабочее пространство, чтобы позже загрузить его в MATLAB, используйте функции и load.

Смежные вопросы