# Excel - xls problem

조회 수: 2 (최근 30일)
Raviteja 2011년 8월 22일
I am writing here some portion of my code.
for i=1:size(files_hea,1)
fid = fopen(files_hea(i).name, 'r');
scan_hea(i)= textscan(fid,...
'%s','delimiter','\n','whitespace','');
scan_file=scan_hea{i};
id=char(scan_file(1,:));
Pat(i).id=id(1:9);
age=char(scan_file(17,:));
Pat(i).age=age(8:end);
sex=char(scan_file(18,:));
Pat(i).sex=sex(7:end);
date=char(scan_file(19,:));
Pat(i).date=date(13:end);
reason=char(scan_file(21,:));
Pat(i).reason=reason(24:end);
acute_mi=char(scan_file(22,:));
Pat(i).acute_mi=acute_mi(35:end);
former_mi=char(scan_file(23,:));
Pat(i).former_mi=former_mi(36:end);
scan_file=[];
fid = fclose(fid);
end
The above code create a structure like this
>> Pat
Pat =
1x536 struct array with fields:
id
age
sex
date
reason
acute_mi
former_mi
My doubt is, I want to save the data 'Pat' into an excel sheet. In that excel sheet it have to show
colourns like this
id age sex date reason acute_mi former_mi additional
1 60 m 1999 mi yes no -
2 58 f 1998 mi no yes yes
3
. . .
. . .
. .
How to do it in matlab ?

댓글을 달려면 로그인하십시오.

### 채택된 답변

Raviteja 2011년 8월 22일
Pc=struct2cell(Pat);
for i=1:20
XSL_mat(i,:)=[Pc(1,1,i),Pc(2,1,i),Pc(3,1,i), ...
Pc(4,1,i),Pc(5,1,i),Pc(6,1,i),Pc(7,1,i),Pc(8,1,i)];
end
xlswrite('database_pat.xls',XSL_mat)
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Fangjun Jiang 2011년 8월 23일
I saw you accepted your own answer. That's fine. But I really encourage you try and understand the code in my comment. It is simply better code for the task. What if you have 20 fields (20 columns of data) to write?

댓글을 달려면 로그인하십시오.

### 추가 답변 (1개)

Fangjun Jiang 2011년 8월 22일
Not exactly fit but I think my answer to another question contains the solution. If you have difficulties, please post back.
Or use the function struct2cell(). There is an example in the help document.
##### 댓글 수: 2없음 표시없음 숨기기
Raviteja 2011년 8월 22일
Some progress I got now, I have written the code like this
Pc=struct2cell(Pat);
for i=1:10
xlswrite('test_xls.xls',[Pc(1,1,i),Pc(2,1,i),Pc(3,1,i), ...
Pc(4,1,i),Pc(5,1,i),Pc(6,1,i),Pc(7,1,i),Pc(8,1,i)],'A1:H10');
end
But it is giving only the last i=10 Pat data and over writing in all cells for A1:H10 (all columns are same)
Fangjun Jiang 2011년 8월 22일
Try this:
%%
Pat(1,5).id=5;
Pat(1,5).age=20;
Pat(1,5).sex='m'
prop=fieldnames(Pat);
N_prop=length(prop);
mat=cell(size(Pat,2),N_prop);
for k=1:N_prop
[mat{:,k}]=deal(Pat(1,:).(prop{k}));
end
mat=[prop';mat]
xlswrite('test.xls',mat);

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Spreadsheets에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by