% cell을 csv, txt로 저장
function csvwrite_cell(celltable, path, mode)

% write 모드 확인 %
if ( mode == 'csv' ) % csv 모드
    line_feed = '\n';
    separator = ',';
elseif ( mode == 'txt' ) % txt 모드
    line_feed = '\r\n';
    separator = '\t';
else % 기타
    line_feed = '\n';
    separator = ',';
end

fp = fopen(path, 'w'); % 파일 포인터 열기
size_of_table = size(celltable); % cell array 크기


if ( mode == 'csv' ) % csv 모드
    for ( count_row = 1:size_of_table(1) ) % row를 1부터 끝까지
        for ( count_col = 1:size_of_table(2) ) % col을 1부터 끝까지
            % 문자열일 때 %
            if ( ischar(cell2mat(celltable(count_row, count_col))) == 1 )
                fprintf(fp, '"%s"', cell2mat(celltable(count_row, count_col)));
            % 실수일 때 %
            else
                fprintf(fp, '%f', cell2mat(celltable(count_row, count_col)));
            end

            if ( rem(count_col, size_of_table(2)) == 0 )
                fprintf(fp, line_feed); % 개행해야 할 때는 개행문자
            else
                fprintf(fp, separator); % 기타의 경우는 구분자
            end
        end
    end
    
elseif ( mode == 'txt' ) % txt 모드
    for ( count_row = 1:size_of_table(1) ) % row를 1부터 끝까지
        for ( count_col = 1:size_of_table(2) ) % col을 1부터 끝까지
            % 문자열일 때 %
            if ( ischar(cell2mat(celltable(count_row, count_col))) == 1 )
                fprintf(fp, '%s', cell2mat(celltable(count_row, count_col)));
            % 정수일 때 %
            else
                fprintf(fp, '%d', cell2mat(celltable(count_row, count_col)));
            end

            if ( rem(count_col, size_of_table(2)) == 0 )
                fprintf(fp, line_feed); % 개행해야 할 때는 개행문자
            else
                fprintf(fp, separator); % 기타의 경우는 구분자
            end
        end
    end
    
else % 기타
    for ( count_row = 1:size_of_table(1) ) % row를 1부터 끝까지
        for ( count_col = 1:size_of_table(2) ) % col을 1부터 끝까지
            % 문자열일 때 %
            if ( ischar(cell2mat(celltable(count_row, count_col))) == 1 )
                fprintf(fp, '%s', cell2mat(celltable(count_row, count_col)));
            % 실수일 때 %
            else
                fprintf(fp, '%f', cell2mat(celltable(count_row, count_col)));
            end

            if ( rem(count_col, size_of_table(2)) == 0 )
                fprintf(fp, line_feed); % 개행해야 할 때는 개행문자
            else
                fprintf(fp, separator); % 기타의 경우는 구분자
            end
        end
    end
    
end


fclose(fp);

end
