Export several arrays with the same name to a xls

1 回表示 (過去 30 日間)
lightworks
lightworks 2013 年 6 月 24 日
Hi,
I have a lot of *.mat, each one containing 3 arrays of the same name, that is:
  • file1.mat contains arrays A1, A2 and A3
  • file2.mat contains arrays A1, A2 and A3 ... and so on.
I need to export them to a xls, like this:
  • Sheet 1 containing, side by side, all the arrays named by A1
  • Sheet 2 containing, side by side, all the arrays named by A2
  • Sheet 3 containing, side by side, all the arrays named by A3
I've been trying for hours now and I can't make it work (my problem is the repeated array's name).
I loaded all the files with this (I don't even know if it's the right way):
s = what('./matrices/Tmax/');
matfiles=s.mat;
for i=1:numel(matfiles);
x=load(['./matrices/Tmax/' char(matfiles(i))]);
...
end
I'd really appreciate any help. Thanks in advance!

採用された回答

Leah
Leah 2013 年 6 月 24 日
This will work up to the Z column in Excel (26 mat files) I don't know how many mat files you have.
mat_files=1:26; %number of mat files
excel_col=double('A'); %starting Excel Column
for m=mat_files
load(['file' num2str(m) '.mat']);
xlswrite('output.xls',A1,'A1',char(excel_col+m-1));
xlswrite('output.xls',A2,'A2',char(excel_col+m-1));
xlswrite('output.xls',A3,'A3',char(excel_col+m-1));
end
  2 件のコメント
lightworks
lightworks 2013 年 6 月 24 日
編集済み: lightworks 2013 年 6 月 24 日
I think I didn't make myself clear.
The name of the *.mat files are not in a number sequence, they are just like: John.mat, Maria.mat, etc. So insted of loading with num2str I had to use the way I said in the first post.
So I tried out your code modified like this:
s = what('./');
matfiles=s.mat;
excel_col=double('A'); %starting Excel Column
for i=1:numel(matfiles);
load(['./' char(matfiles(i))]);
xlswrite('output.xls',A1,'A1',char(excel_col+i*7-1));
xlswrite('output.xls',A2,'A2',char(excel_col+i*7-1));
xlswrite('output.xls',A3,'A3',char(excel_col+i*7-1));
end
Where I also modified that the increment is i*7-1 insted of i-1. I did this because each of my arrays contains 7 columns (I don't know if it's the right thing to do).
But I get this error:
??? Error using ==> xlswrite at 213 Excel returned: Error: Object returned error code: 0x800A03EC.
Error in ==> test at 11 xlswrite('output.xls',A1,'A1',char(excel_col+i*7-1));
What did I messed up?
Thanks a lot for your help!
Leah
Leah 2013 年 6 月 24 日
Your modification is correct and the code works for me. Must be something specific to your data. My dummy data is just a bunch of numbers. Check out this info for possible solutions to that error code.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpreadsheets についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by