MATLAB Answers

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

2 views (last 30 days)
langrg
langrg on 20 Sep 2021
Commented: langrg on 21 Sep 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!

Answers (1)

Walter Roberson
Walter Roberson on 20 Sep 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 Comments
langrg
langrg on 21 Sep 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...

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!