2017-11-27 3 views
0

다음 while 루프에서 이미지를 읽고 분석 한 다음 결과를 Excel 워크 시트에 저장된 테이블에 저장합니다. 처음에 하나의 이미지/테이블에 대해이 코드를 작성한 다음 n 개의 이미지 용으로 개발해야한다는 것을 깨달았습니다.MATLAB : while 루프를 사용하여 Excel에서 여러 테이블 저장

기본적으로 결과는 동일한 Excel 워크 시트에 덮어 쓰지 않고 저장되는 것이 좋습니다. 이상적으로 테이블은 빈 행으로 세로 구분됩니다.

while(1) 
... 
%code code code 
... 
message = sprintf('Do you want to save the results in an Excel 
worksheet?'); 
reply = questdlg(message,'Run Program?','OK','Cancel', 'OK'); 
if strcmpi(reply, 'Cancel') 
% User canceled so exit. 
return; 
end 


% Table creation. 
% code code code 
% Saving table to Excel 

T = table(Diameter,BandWidth,n1,n2,P1,P2,Damage,... 
'RowNames',Band); 
filename = 'Results.xlsx'; 
writetable(T, filename, 'Sheet',1, 'Range', 'A1','WriteRowNames',true); 

% Create a while loop to save more experiments to the Excel worksheet. 

promptMessage = sprintf('Do you want to process another photo?'); 
button = questdlg(promptMessage, 'Continue', 'Continue', 'Cancel', 
'Continue'); 
if strcmpi(button, 'Cancel') 
break; 
end 
end 

당신이 아이디어를 얻을하는 데 도움이 될 수있는 경우는, 각 테이블은 6 × 8 인 :

여기에 지금과 같은 내 노력입니다.

+1

결과 테이블에 행을 추가하고 처리가 완료되면 Excel에 쓸 수는 없습니까? 도움을 주신 덕분에 – excaza

답변

1

while 루프를 실행하기 전에 최종적으로 Excel 파일에 쓸 테이블을 보유 할 셀 배열을 선언하십시오.

cellArrayOfTableToBeWritten = {}; 

또한 루프 전에 빈 행으로 사용할 셀 배열을 정의하십시오.

rowWidth = 8; 
blankrow = repmat({''},1,rowWidth); 

현재 테이블을 쓰는 곳에서는 빈 줄이 아래쪽에있는 셀 배열에 작성한 내용을 추가하십시오.

cellArrayOfTableToBeWritten = [cellArrayOfTableToBeWritten; 
           T.Properties.VariableNames; 
           table2cell(T); 
           blankrow]; 

while 루프가 완료되면 결합 된 셀 배열을 Excel 파일로 파일에 씁니다.

xlswrite(filename, cellArrayOfTableToBeWritten); 
+0

. 귀하의 코드는 제가 셀 배열에 쓰는 오류를줍니다 (나는이 부분에 대해 논평했다). 오류 : '연결되는 행렬의 크기가 일치하지 않습니다.' – Jack

+0

잘 작동합니다. Macbook에 있기 때문에 Excel에 쓰려면 xlwrite 함수를 다운로드해야했습니다. 고마워, 너의 대답을 받아 들일거야. – Jack

+0

@Jack 답변에 만족한다면 받아 들일 수 있습니까? – JMikes

관련 문제