Effacer les filtres
Effacer les filtres

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

3 vues (au cours des 30 derniers jours)
langrg
langrg le 20 Sep 2021
Commenté : langrg le 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!

Réponses (1)

Walter Roberson
Walter Roberson le 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 commentaires
Walter Roberson
Walter Roberson le 20 Sep 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 le 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...

Connectez-vous pour commenter.

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by