Я пытаюсь прочитать простой файл xlsx с xlsread в октаве. Его версия CSV показана ниже:
2,4,abc,6
8,10,pqr,12
14,16,xyz,18
Я пытаюсь прочитать и написать содержимое с помощью этого кода:
[~, ~, RAW] = xlsread('file.xlsx');
allData = cell2mat(RAW); # error with cell2mat()
printf('data nrows=%d, ncolms=%d\n', rows(allData), columns(allData));
for i=1:rows(allData)
for j=1:columns(allData)
printf('data(%d,%d) = %d\n', i,j, allData(i,j));
endfor
endfor
и я получаю следующую ошибку:
error: cell2mat: wrong type elements or mixed cells, structs, and matrices
Я экспериментировал с несколькими вариантами этой проблемы:
(A) Если я удаляю столбец с текстовыми данными, т.е. файл xlsx содержит только цифры, то этот код работает нормально.
(B) С другой стороны, если я удаляю вызов cell2mat () даже для чисто числа xlsx, я получаю сообщение об ошибке при доступе к ячейке:
error: printf: wrong type argument 'cell'
(C) Если я использую cell2mat () во время printf, например:
printf('data(%d,%d) = %d\n', i,j, cell2mat(allData(i,j)));
Я получаю правильные данные для целых чисел и мусор для текстовых элементов.
Итак, как я могу получить доступ и распечатать каждую ячейку данных xlsx, если xlsx содержит данные смешанного типа?
Другими словами, учитывая индекс столбца и учитывая, что я знаю, какой тип данных я там ожидаю (целое число или строка), так как я могу переформатировать тип ячейки перед его использованием?