How to get same xlsread "raw" output whithout using xlsread?

4 visualizaciones (últimos 30 días)
langrg
langrg el 20 de Sept. de 2021
Comentada: langrg el 21 de Sept. de 2021
Hello,
xlsread is no more recommanded. So what is the correct solution to get exactly the same variable "raw" I was getting when using the following command :
[~, ~, raw] = xlsread('MyExcelFile.xls');
I have tried to use readcell function like this :
raw = readcell('MyExcelFile.xls', 'DateTimeType', 'text');
but that doesn't return me the same result :
  • When I was using xlsread, date was returned as text with format 'dd/mm/yyyy', example : '01/01/2014'
  • When I use readcell, date is returned as text with the exact same format as the cell in Excel 'dd-mmm-yyyy', example : '01-janv-2014'
I have to get the same result I got with xlsread, regardless of Excel language, regardless of Excel cells date format...
What is/are the command(s) I should use?
Other constraint : The command(s) do(es) not have to use/launch Excel.
Thanks!

Respuestas (1)

Walter Roberson
Walter Roberson el 20 de Sept. de 2021
mask = cellfun(@isdatetime, YourCell);
YourCell(mask) = cellfun(@(DT) datetime(DT, 'format', 'dd/MM/yyyy'), 'uniform', 0);
Now the datetime objects will be reformatted to the style you want.
If you want text, then
mask = cellfun(@isdatetime, YourCell);
YourCell(mask) = cellfun(@(DT) char(datetime(DT, 'format', 'dd/MM/yyyy')), 'uniform', 0);
  6 comentarios
Walter Roberson
Walter Roberson el 20 de Sept. de 2021
You might be able to use a 'Range' option to specifically read that line. If not then use
filename = 'MyExcelFile.xls';
opt = detectImportOptions(filename, 'DataTimeType', 'text', 'ReadVariableNames', false);
opt.DataLines = [1 inf];
table2cell(readtable(filename, opt))
langrg
langrg el 21 de Sept. de 2021
I don't have the option 'DataLines" available.
I think readtable is not the good solution because each column of a table must content same class data. My Excel file contains text and double in column 1 and 2.
readcell should be the right function, but I don't know why
readcell('MyExcelFile.xls', 'DateTimeType', 'datetime')
return an error while
readtable('MyExcelFile.xls', 'DateTimeType', 'datetime')
does not...

Iniciar sesión para comentar.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by